Как посеять значение в aspnet_UsersInRoles в EntityFramework

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


person czetsuya    schedule 09.01.2012    source источник


Ответы (1)


Вам нужно добавить свойство коллекции Roles в 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».

person Eranga    schedule 09.01.2012