Замените WithRequired
в вашем OnModelCreating
методе на WithOptionalPrincipal
:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TestB>().HasOptional(x => x.NavA).WithOptionalPrincipal();
modelBuilder.Entity<TestC>().HasOptional(x => x.NavA).WithOptionalPrincipal();
}
(Если бы А была главной сущностью, вы бы использовали WithOptionalDependent
.)
EDIT
После ваших комментариев, я думаю, было бы интересно увидеть эффект от добавления двух классов TestD и TestE, присвоения A двух свойств навигации TestD и TestE и сделать это в вашей модели:
modelBuilder.Entity<TestB>().HasOptional(x => x.NavA).WithOptionalPrincipal();
modelBuilder.Entity<TestC>().HasOptional(x => x.NavA).WithOptionalPrincipal();
modelBuilder.Entity<TestA>().HasRequired(x => x.NavD);
modelBuilder.Entity<TestA>().HasRequired(x => x.NavE);
В таблице A теперь есть четыре внешних ключа: B и C (обнуляемые), D и E (не обнуляемые). Я думаю, что последнее, что вы хотите.