如何在提交之前检查Linq2SQL对象是否已更改

时间:2012-01-19 23:54:38

标签: c# linq linq-to-sql ado.net

我有一些课程,例如父母和孩子。 Parent有一个Children对象的集合,我使用Linq 2 SQL来持久化它们。问题是:如果Children对象中的某些属性发生更改,我可能需要更新Parent对象,我需要在持久化之前检查它。

我有一个带有Insert(Children子元素)方法的ChildrenRepository,它基本上调用Linq 2 SQL中的InsertOnSubmit(Children子元素)方法,以及从Linq 2 SQL调用SubmitChanges()的Save()方法。如果有任何被修改的Children对象,我想检查Save()方法,如果有的话,那就去做吧。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

如果您引用了子对象:

var changes = context.GetChangeSet();
if (changes.Updates.Contains(yourChildObject))
    // Update Parent

否则

changes.Updates.Where(o => o is Child);

答案 1 :(得分:1)

让父级更改域逻辑的一部分,这样您就可以让数据访问层完成它的工作而无需您的干预。这是一个例子

var child = parent.Child(...);
child.Update(...);

和Update的逻辑,假设是双向关系。

班级儿童    {       public void Update(...);       {           设定孩子的属性;           Parent.Property =新值;       }    }

在这种情况下,您无需担心数据访问内部。