Как сопоставить разделение таблицы в EF Code First?

Как я могу сопоставить разделение таблицы с помощью EF Code First? Разделение таблиц для EDMX описано, например, здесь. Это позволяет отображать два объекта с отношением 1: 1 в одну и ту же таблицу. Я знаю, что могу сделать подобное сопоставление с помощью

person Ladislav Mrnka    schedule 22.03.2011    source источник


Ответы (1)


Вот как я только что получил EF 4.1 (RC) для разделения таблиц в Code First.

  1. Определите свои две сущности. Обязательно включите ключ в обе сущности. Кроме того, включите в каждый объект свойства навигации, указывающие на другой объект.
  2. В вашем переопределении OnModelCreating . . . а. Сопоставьте обе сущности с одной и той же таблицей. б. Создайте связь между двумя таблицами.

        modelBuilder.Entity<EntityOne>().ToTable("MySingleTable");
        modelBuilder.Entity<EntityTwo>().ToTable("MySingleTable");
    
        modelBuilder.Entity<EntityOne>().HasRequired(p => p.NavToEntityTwo).WithRequiredDependent(c => c.NavToEntityOne);
    

Это работает для меня, но я понимаю, что, учитывая новизну RC, я смог рассмотреть только ограниченные и простые сценарии.

person David Martin    schedule 23.03.2011
comment
Я уже пробовал это, и это не сработало. Я попробую еще раз и дам вам знать. - person Ladislav Mrnka; 24.03.2011
comment
Можете ли вы объяснить, как это не работает? Одна вещь, которая приходит на ум, заключается в том, что база данных не генерирует значение первичного ключа. Вместо этого я устанавливаю значение ключа в коде и обнаружил, что должен добавить значение как в первый объект, так и во второй объект перед вызовом SaveChanges. - person David Martin; 24.03.2011
comment
Оно работает. Я понятия не имею, что я неправильно настроил, когда пробовал. Я также получил ответ на форуме MSDN, где используется автоматически сгенерированный идентификатор, а также свойство навигации только для основного объекта: social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/ - person Ladislav Mrnka; 24.03.2011