使用Entity Framework将某些对象持久化到SQL Server数据库时遇到了一些困难。我正在尝试使用代码第一种方法来执行以下操作:
public class ObjectA
{
public string Name { get; set; }
public IMyInterface InterfaceObject { get; set; }
public ObjectD AnotherObject { get; set; }
}
public interface IMyInterface
{
}
public class ObjectB : IMyInterface
{
public string SomePropertyB { get; set; }
}
public class ObjectC : IMyInterface
{
public string SomePropertyC { get; set; }
}
public class ObjectD
{
public string SomePropertyD { get; set; }
}
My Application Context类包含以下内容:
public DbSet<ObjectA> ObjectA { get; set; }
public DbSet<ObjectB> ObjectB { get; set; }
public DbSet<ObjectC> ObjectC { get; set; }
public DbSet<ObjectD> ObjectD { get; set; }
更新数据库后,它包含上述每个实体的表。当我尝试使用context.SaveChanges()保存ObjectA时,ObjectA和ObjectD中的数据是持久的,但InterfaceObject后面的ObjectB或ObjectC不会保留。
我试图做的甚至可能吗?如果没有,是否有人对其他持久化ObjectA的方法有任何想法,以便它只能有一个ObjectB或ObjectC的实例,而不是两者都有?
答案 0 :(得分:2)
我通过使接口成为带有Id字段的抽象类来解决这个问题:
public interface IMyInterface
{
[Key]
public int Id { get; set; }
}
现在,在数据库中,每个层次结构使用一个表来表示相关的类。