Как заполнить значение aspnet_UsersInRoles в EntityFramework - PullRequest
0 голосов
/ 09 января 2012

В настоящее время я создаю приложение, объединяющее таблицы членства 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_Roles с использованием таблицы aspnet_UsersInRoles и инициализацией значений в ней.

1 Ответ

1 голос
/ 09 января 2012

Вам необходимо добавить Role s в AspnetRoles коллекционное свойство класса AspnetUser.

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".

...