我们正在使用工作单元模式与通用存储库模式结合使用。
POCO是这样构建的:
public class Aclass: IEntity{
public int ID;
public virtual Bclass Bproperty;
public virtual Cclass Cproperty;
}
使用IEntity
public interface IEntity{
int ID;
}
当我们创建一个唯一的A对象时,我们指的是一个已经存在的B对象和C对象。 当我们保存.SaveChanges()A时,还会保存B和C的副本。因此,不是引用原始的B和C对象,而是A的Bproperty和Cproperty指的是新对象。
我们可以通过附加来修复它,但考虑到我们正在处理模式,这会影响我们的抽象级别。
有没有人知道如何以干净的方式解决这个问题?
答案 0 :(得分:2)
您必须在Unchanged
SaveChanges
context.Entry<BClass>(bclass).State = EntityState.Unchanged;
或
context.ObjectStateManager.ChangeObjectState(AEntity.BClass, EntityState.Unchanged);
(取决于您使用的上下文类型)