0

我们正在使用与通用存储库模式相结合的工作单元模式。

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 的一个副本。所以 A 的 Bproperty 和 Cproperty 不是指原始的 B 和 C 对象,而是指新的对象。

我们可以通过附加来修复它,但鉴于我们正在使用模式,这与我们的抽象级别有关。

有没有人知道如何以干净的方式解决这个问题?

4

1 回答 1

2

您必须像Unchanged之前一样标记现有的 B 和 C 对象SaveChanges

context.Entry<BClass>(bclass).State = EntityState.Unchanged; 

或者

context.ObjectStateManager.ChangeObjectState(AEntity.BClass, EntityState.Unchanged);

(取决于您使用的上下文类型)

于 2012-11-30T15:28:03.410 回答