1

场景:实体框架 4,POCO 模板和主从关系。

假设我有一个这样的主类型:

//partial implementation of master entity
partial class Master
{
    public void AddDetail(x,y,z)
    {
        var detail = new Detail()
        {
           X = x,
           Y = y,
           Z = z,
        };

        //add the detail to the master
        this.Details.Add(detail);
    }
}

如果我随后将主实例添加到我的上下文并提交,则不会保存详细信息:

var masterObject = new Master();
masterObject.AddDetail(1,2,3);
myContext.MasterSet.AddObject(masterObject);

使用 POCO 模板时,有什么方法可以通过可达性来持久化详细信息?还是有什么其他方式?Master 实体中的 Details 集合是一个 FixUpCollection,因此它应该跟踪 IMO 的更改。

那么,任何想法如何使这项工作W / O杀死POCO'ness太多?

4

2 回答 2

0

我找到了解决方案。

我只需要像这样传递 SaveOptions.DetectChangesBeforeSave :

context.SaveChanges(SaveOptions.DetectChangesBeforeSave);

这允许我将细节对象添加到主对象,而无需将每个单独的细节附加到上下文。

于 2010-05-21T11:45:53.803 回答
-1

可以

向您的实体添加一个构造函数,该构造函数接受一个上下文,该上下文通过引用保存在私有字段中。然后,您的AddDetail函数可以检查私有_context字段,如果它引用实例化的上下文,则在保存主记录后将详细信息添加到上下文中。

然而...

这可能不是最好的模式,因为它违反了单一职责原则。我认为最好使用存储库模式,并让存储库提交未保存的详细信息。 是一篇关于在实体框架 4 中实现存储库模式的精彩文章。

于 2010-05-20T15:10:01.210 回答