【问题标题】:Duplicate Childobjects in composition after .SaveChanges();.SaveChanges() 之后的合成中重复的子对象;
【发布时间】:2012-11-30 14:51:48
【问题描述】:

我们正在使用 Unit Of Work 模式与 Generic Repository 模式相结合。

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 对象,而是指新的对象。

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

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

【问题讨论】:

    标签: c# asp.net asp.net-mvc-3 entity-framework entity


    【解决方案1】:

    你必须在SaveChanges之前将现有的B和C对象标记为Unchanged

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

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

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

    【讨论】:

    • 这看起来很有希望,会尽快回复您!
    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多