Свободный код First EF 4.3 - PullRequest
       15

Свободный код First EF 4.3

0 голосов
/ 10 марта 2012

У меня есть класс Tenant, который связывается с пользователем через таблицу TenantUser в базе данных.Это соотношение много => много, хотя на самом деле я хочу раскрыть сопоставление только одним способом.

Арендатор имеет свойство

virtual ICollection<User> Users { get; set; }

У класса User нет сопоставления свойств.*

Возможно ли использовать свойства или свободный API для сопоставления свойства Users пользователя с тем, чтобы он собирал пользователей для конкретного арендатора через таблицу TenantUser.

Возможно ли это, или класс Userнужна коллекция Tenant для определения любого вида сопоставления?

У меня также (опционально) будет

DbSet<TenantUser> 

в контексте для управления промежуточной таблицей, но для удобства яхотите, чтобы недвижимость была доступна для класса Арендатора.

Спасибо.

1 Ответ

4 голосов
/ 10 марта 2012

Вы можете определить отображение «многие ко многим» в Fluent API, даже если в классах модели представлена ​​только одна коллекция:

modelBuilder.Entity<Tenant>()
    .HasMany(t => t.Users)
    .WithMany()
    .Map(x =>
    {
        x.MapLeftKey("TenantId");
        x.MapRightKey("UserId");
        x.ToTable("TenantUser");
    });

Вы не можете определить эту связь с аннотациями данных.

Имейте в виду, что у вас нет сущности TenantUser в отношениях «многие ко многим» в Entity Framework. Поэтому вы не можете создать DbSet<TenantUser> в вашем контексте для управления таблицей ссылок. EF управляет этой таблицей внутренне, когда вы добавляете или удаляете отношения, добавляя и удаляя элементы в / из коллекции Tenant.Users.

...