Я не уверен, и у меня нет VS для тестирования в данный момент, но я думаю, что когда вы разбиваете сущность на несколько таблиц, вам необходимо отобразить все поля, а не только те, которые являются «необычными».
Попробуйте обновить отображение на что-то вроде этого ...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Contract>()
.Map(m => {
m.Properties(p =>
new {
p.Id,
p.Document
});
m.ToTable("ContractDocument");
})
.Map(m => {
m.Properties(p =>
new {
p.Id,
/* everything else NOT document */
});
m.ToTable("Contract");
});
base.OnModelCreating(modelBuilder);
}
Исправление основано на этом
Редактировать
Исходя из вашего комментария, кажется, что вам нужно определить отношения, а не разделять сущности. У вас есть отдельные таблицы и отдельные классы, но взаимосвязь между ними отсутствует. Может быть, попробовать что-то вроде этого.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Contract>().ToTable("Contract");
modelBuilder.Entity<ContractDocument>().ToTable("ContractDocument");
modelBuilder.Entity<Contract>()
.HasOptional(c => c.Document)
.WithRequiredDependent();
2-е редактирование
Ладно, чтобы сделать это как сложный тип, я думаю, вам нужен первый материал, разбивающий карту, плюс строка modelBuilder.ComplexType<ContractDocument>();
.