我有一个具有多个继承级别的现有模型,其中几个中间类是抽象的。该模型看起来不错,但是在尝试创建数据库时出现错误:
从第 13、20 行开始映射片段的问题:具有不同键的两个实体映射到同一行。确保这两个映射片段不会将具有不同键的两组实体映射到同一组行。
这是我可以编写的用于重现错误的最简单的代码。如果我做Pet
混凝土,问题就消失了。我可以做些什么来允许我的层次结构中有多个抽象类?
public abstract class Animal
{
public int Id { get; set; }
}
public abstract class Pet : Animal
{
public string Name { get; set; }
}
public class Fish : Pet
{
public bool IsFreshwater { get; set; }
}
public class Dog : Pet
{
public bool IsNeutered { get; set; }
}
public class Person : Animal
{
public Pet MyPet { get; set; }
}
public class PersonContext : DbContext
{
public DbSet<Person> People { get; set; }
}
[TestFixture]
public class AnimalTests
{
[Test]
public void CanCreateDatabase()
{
Database.SetInitializer(new DropCreateDatabaseAlways<PersonContext>());
using (var context = new PersonContext())
{
Assert.AreEqual(0, context.People.Count());//fails here
}
}
}
更新。这是生成的 .edmx 文件中差异的 KDiff 快照。左边的文件是我失败的原始代码,右边是我DbSet<Pet>
在 DbContext 中包含 a 时生成的文件。