コード ファーストの移行で Entity Framework 5 (コード ファースト) を使用する MVC4 プロジェクトがあります。サイトは を使用していSimpleMembership
ます。users テーブルをシードしようとしていますが、ナビゲーション プロパティの設定に関連するエラーが発生しています。
私はAccount
とUser
モデルを持っています。モデルをカスタムテーブルとしてSimpleMembership
使用します。この関係は 1 対多で、 ごとに 1 つですが、 ごとに多数あります。シード時にto関係を設定しようとしていますが、できません。User
users
Account
User
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("dev@dev.com"))
{
WebSecurity.CreateUserAndAccount("dev@dev.com", "password", new User()
{
Email = "dev@dev.com",
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
orAccountId
を含めない場合は、"Invalid column name 'Account'"
これは、クラスのナビゲーション プロパティだけで機能していたことを指摘しておく必要があります。外部キー プロパティを追加すると、すべてが爆発しました (FK に関連するエラーがありますが、ここに投稿するほど十分に再現できず、データベースを再作成する必要があることに関連している可能性があります。上記が表示されます。 -新しいテーブルのないデータベースでのエラー。
また、SQL データベースとして SQL Azure を使用しています。
これは ; の一般的な使用例のようですSimpleMembership
。何がそんなに私を悩ませているのかわからない。