0

我有一個標準的ASP.NET MVC4應用程序,我用EF Code First構建了DAL。目前大約有20-30個模型,我正處在一個我想要集成用戶和角色的階段。我有這麼多的研究,但似乎無法讓它起作用。以下是我現在所擁有的:SimpleMembershipProvider不向我的數據庫中添加表

在我的數據庫動初始化類(被調用每一次我改變模型的時間),我與一羣數據的種子,然後把這個:

public class DbInit : DropCreateDatabaseIfModelChanges<TrackerContext> 
{ 
    protected override void Seed(TrackerContext context) 
    { 
     ...seed stuff and save it... 
     WebSecurity.InitializeDatabaseConnection("TrackerContext", "User", "Id", "UserName", autoCreateTables: true); 
    } 
} 

通過調試它不會拋出任何錯誤,我可以確認它正在打這行代碼。我的用戶模型是這樣的:

public class User 
{ 
    public int Id { get; set; } 
    public string UserName { get; set; } 
    public string Password { get; set; } 
    public string Email { get; set; } 
    public PasswordQuestion PasswordQuestion{ get; set; } 
    public string PasswordAnswer { get; set; } 
    public string Type { get; set; } 
} 

一切從我讀,我想這應該是所有我需要做的就是這個工作,但我有兩個問題:

  1. 沒有會員表被加載

  2. 我的配置似乎被拋即使我引用WebMatrix.WebData DLL

錯誤

下面是配置部分:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> 
    </providers> 
</roleManager> 
<membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
    </providers> 
</membership> 

缺少什麼我在這裏?

回答

0

據我所看到的,你錯過了

public DbSet<User> User{ get; set; } 
在你的上下文類

。你必須爲你想在你的數據庫中爲你創建的每個表Migrations這樣做。

+0

真的,你想要你創建類DbContext類,這是遷移進入並創建這些表的地方,但對於這個特殊問題,我正在討論使用簡單成員資格提供程序創建的表。這些表是在調用WebSecurity.InitializeDatabaseConnection(...)行時創建的。這是一個較老的問題,所以我不知道我的確切問題在這裏,但現在我通常將該行放在我的global.asax中,與遷移分離,並且它工作正常。 – ledgeJumper

+0

所以你說的是Simple Membership Provider在數據庫中包含的表格?我可以在這裏討論2個教程。我有一個類似的問題,那些表沒有創建,因爲我不得不手動創建它們。但我很高興看到你解決了。 – Yustme

0

1)你有沒有檢查你的ConnectionString?應該是這樣的:

<connectionStrings> 
    <add name="DefaultConnection" connectionString="data source=SERVER;initial catalog=DATABASE;user id=USER;password=PASSWORD;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

而且你應該在你的配置有這個太:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 

    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    </entityFramework> 

2)檢查您的引用。 System.Web.Webpages應該在那裏,CopyLocal應該設置爲true。然後檢查你的.NET Framework版本(4.0,沒有客戶端版本)

希望這有助於。