0

現在、EntityFramework と aspnet メンバーシップ テーブルを組み合わせたアプリケーションを作成しています。

aspnet メンバーシップ テーブルを動的に作成するには、このチュートリアルに従いました: 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_UsersInRolesと の間の多対多の関係が新しいテーブルaspnet_Usersを作成するため、エンティティの作成も機能しません。aspnet_Roles

これを行う方法について何か考えはありますか?テーブルの使用とテーブル内の値の初期化の間aspnet_Usersに多対多の関係があること。aspnet_Rolesaspnet_UsersInRoles

4

1 に答える 1

1

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

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」ユーザーに追加されます。

于 2012-01-09T01:41:35.100 に答える