我有这样的设置(现有的,存储在文档数据库中。我们正在调查使用EF迁移到SQL):
public class MyClassInTheDbSet : BaseClass
{
}
public abstract class BaseClass
{
public Staff LastModifiedBy {get;set;}
public Stamp LastModifiedStamp {get;set;}
}
[ComplexType]
public class Staff
{
public string Name {get;set:}
public string Id {get;set;}
}
[ComplexType]
public class Stamp
{
public Staff ModifiedBy {get;set;}
public Staff CreatedBy {get;set;} //these 2 were being set to the same thing
public DateTimeOffset? ModifiedOn {get;set;}
}
当试图将这个实体保存到数据库中时,我收到一条消息,说明" MyClassInTheDbSet引用同一类型的复合体" Staff"不止一次。"尽管出现错误消息,该实体仍然没有问题。这只是EF中不可避免的错误吗?有没有办法在不完全改变现有类设计的情况下解决这个问题?
答案 0 :(得分:1)
我想当CreatedBy
和ModifiedBy
是同一个Staff
实例时会出现问题。
据我所知,它应该不起作用。也许您使用嵌套复杂类型的事实有助于此。
有没有办法在不完全改变我们的情况下解决这个问题 现有的班级设计?
我认为只需克隆Staff实例,以便CreatedBy
和ModifiedBy
引用不同的实例就可以解决问题。
答案 1 :(得分:0)
上课,一如既往,我是个白痴。
我在Stamp对象中引用了两次相同的复杂类型(人员)(我最初忽略了它);事实证明他们都被设置为同一个对象。