Это моя (упрощенная) проблема.Классы:
public class RetailExposure
{
public int RetailExposureId { get; set; }
public int RetailModelId { get; set; }
}
public class PocRetailExposure : RetailExposure
{
[NotMapped]
public string IncidentScore { get; set; }
}
и мой код OnModelCreating:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<RetailExposure>().ToTable("dbo.RetailExposure");
modelBuilder.Entity<RetailExposure>().Map<PocRetailExposure>(p => p.Requires("RetailModelId").HasValue(1).IsRequired());
}
Однако, когда я добавляю новую запись экспозиции:
context.RetailExposures.Add(new RetailExposure { RetailModelId = 1 });
context.SaveChanges();
, я получаю следующую ошибку:
System.Data.MappingException:
(6,10) : error 3032: Problem in mapping fragments starting at line 6:Condition
member 'RetailExposure.RetailModelId' with a condition other than 'IsNull=False'
is mapped. Either remove the condition on RetailExposure.RetailModelId or remove
it from the mapping.
Я пытаюсь создать базовый класс RetailExposure с производными классами, определенными из поля RetailModelId.Производные классы не содержат свойств, которые есть в базе данных.Кажется, я понял, как настроить EF для использования RetailModelId в качестве дискриминатора, но я все еще получаю эту ошибку при сохранении изменений.
Есть идеи, как мне настроить контекст, чтобы это работало?Или я пытаюсь сделать что-то, что EF в настоящее время не поддерживает?
Я понимаю, что могу сказать EF просто полностью игнорировать производные классы, но это не совсем то, что я хочу.