0

現在、EntityFrameworkとaspnetメンバーシップテーブルを組み合わせたアプリケーションを作成しています。動的ASPNETメンバーシップテーブルを作成するにはEntityFrameworkでaspnet_UsersInRolesに値をシードする方法

、私はこのチュートリアルに従っ:http://imar.spaanjaars.com/563/using-entity-framework-code-first-and-aspnet-membership-together

私の問題はaspnet_UsersInRolesテーブルです。私はOnModelCreatingを変更し、テーブルをマッピングし、FFコードを追加するには:

modelBuilder.Entity<AspnetUser>() 
       .HasMany(u => u.AspnetRoles) 
       .WithMany(r => r.AspnetUsers) 
       .Map(m => 
        { 
         m.ToTable("aspnet_UsersInRoles"); 
         m.MapLeftKey("UserId"); 
         m.MapRightKey("RoleId"); 
        }); 

は、それが正常にaspnet_UsersInRolesテーブルを作成したが、私の問題は、私は、このためのクラス/エンティティを持っていないということであると私は初期化できませんよ私がSeedメソッドをオーバーライドしたときの値。

aspnet_Usersaspnet_Rolesの多対多の関係が新しいテーブルを作成するため、エンティティを作成すると、aspnet_UsersInRolesも機能しません。

これはどのように行うのですか? aspnet_Usersaspnet_Rolesの間に多義性があり、テーブルaspnet_UsersInRolesを使用して値を初期化しています。

答えて

1

クラスのRoleAspnetRolesコレクションプロパティを追加する必要があります。

var role = new AspnetRole { Name = "Foo" }; 
var user = new AspnetUser { Name = "Bar", /*other props*/ }; 

user.AspnetRoles = new List { role }; 

context.Users.Add(user); 

これにより、「Foo」ロールが「Bar」ユーザーに追加されます。

+0

ありがとうございました。 – czetsuya

関連する問題