EF 6.2中的复杂类型

时间:2017-11-06 23:26:57

标签: c# entity-framework

我有这样的设置(现有的,存储在文档数据库中。我们正在调查使用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中不可避免的错误吗?有没有办法在不完全改变现有类设计的情况下解决这个问题?

2 个答案:

答案 0 :(得分:1)

我想当CreatedByModifiedBy是同一个Staff实例时会出现问题。 据我所知,它应该不起作用。也许您使用嵌套复杂类型的事实有助于此。

  

有没有办法在不完全改变我们的情况下解决这个问题   现有的班级设计?

我认为只需克隆Staff实例,以便CreatedByModifiedBy引用不同的实例就可以解决问题。

答案 1 :(得分:0)

上课,一如既往,我是个白痴。

我在Stamp对象中引用了两次相同的复杂类型(人员)(我最初忽略了它);事实证明他们都被设置为同一个对象。