Как я могу сопоставить разделение таблицы с помощью EF Code First? Разделение таблиц для EDMX описано, например, здесь. Это позволяет отображать два объекта с отношением 1: 1 в одну и ту же таблицу. Я знаю, что могу сделать подобное сопоставление с помощью
Как сопоставить разделение таблицы в EF Code First?
Ответы (1)
Вот как я только что получил EF 4.1 (RC) для разделения таблиц в Code First.
- Определите свои две сущности. Обязательно включите ключ в обе сущности. Кроме того, включите в каждый объект свойства навигации, указывающие на другой объект.
В вашем переопределении 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
Я уже пробовал это, и это не сработало. Я попробую еще раз и дам вам знать.
- person Ladislav Mrnka; 24.03.2011
Можете ли вы объяснить, как это не работает? Одна вещь, которая приходит на ум, заключается в том, что база данных не генерирует значение первичного ключа. Вместо этого я устанавливаю значение ключа в коде и обнаружил, что должен добавить значение как в первый объект, так и во второй объект перед вызовом SaveChanges.
- person David Martin; 24.03.2011
Оно работает. Я понятия не имею, что я неправильно настроил, когда пробовал. Я также получил ответ на форуме MSDN, где используется автоматически сгенерированный идентификатор, а также свойство навигации только для основного объекта: social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/
- person Ladislav Mrnka; 24.03.2011