我有一個MVC4項目,使用實體框架5(代碼優先)與代碼優先遷移。該網站使用SimpleMembership
。我試圖播種用戶表,但遇到與設置導航屬性有關的錯誤。播種與一對多關係的用戶數據庫
我有一個Account
和User
模型。 SimpleMembership
使用User
模型作爲我自定義的users
表。這種關係是一對多關係,每User
有一個Account
,但許多Users
每個Account
。我試圖在種子時將User
設置爲Account
關係,但我無法。
的模型(省略多餘的屬性):
public class User
{
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Description { get; set; }
public int AccountId { get; set; }
public virtual Account Account { get; set; }
}
public class Account
{
[Key]
public int AccountId { get; set; }
public string Name { get; set; }
// Account has many users but only one "admin" user. ID manually set.
// Nullable because of chicken/egg problem (user requires account, account requires user)
public int? AdminUser { get; set; }
public virtual ICollection<User> Users { get; set; }
}
種方法:在哪裏我似乎運行前奏麻煩
protected override void Seed(MyProject.Data.MyContext context)
{
WebSecurity.InitializeDatabaseConnection("MyContext", "Users", "UserId", "UserName", autoCreateTables: true);
Account adminAccount = new Account()
{
Name = "Dev",
Description = "Dev account"
};
context.Accounts.AddOrUpdate(adminAccount);
if (!WebSecurity.UserExists("[email protected]"))
{
WebSecurity.CreateUserAndAccount("[email protected]", "password", new User()
{
Email = "[email protected]",
FirstName = "Dev",
LastName = "Guy"
// Problematic properties - see below
// Account = adminAccount,
// AccountId = adminAccount.AccountId
});
}
}
是,當我打電話WebSecurity.CreateUserAndAccount
:
如果我嘗試包括導航屬性
Account = adminAccount
我得到的錯誤:"No mapping exists from object type MyProject.Models.Account to a known managed provider native type."
如果我試圖僅僅包括FK參考
AccountId = adminAccount.AccountId
我得到的錯誤:"Invalid column name 'Account'"
如果我不包括
Account
或AccountId
,我也得到"Invalid column name 'Account'"
我應該指出,我的工作只是在我的類的導航屬性。當我添加外鍵屬性時,所有東西都爆炸了(有些錯誤與FK相關,但是我無法很好地將它們複製到這裏,它們很可能與我的數據庫需要重新創建有關。用新鮮的,表少數據庫-errors
另外,我使用的是SQL Azure的是我的SQL數據庫
這似乎是一個常見的用例SimpleMembership
;我不知道是什麼它給我這麼大的麻煩。