如何判断linq to sql对象是新的,修改的还是未更改的?

时间:2010-06-02 19:03:37

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

我有一个linq到sql类。我想检测它是否是新的(意味着插入将完成)或者是否有任何挂起的更改(将进行更新)。我意识到我可以通过使用partial类并挂钩每个属性的on change事件来实现这一点。然而,对于一个不断变化的课程来说,这是一个很大的维护。

有更好的方法吗?

2 个答案:

答案 0 :(得分:7)

您可以查看DataContext课程。

首先,检查DataContext上的ObjectTrackingEnabled property。如果它返回false,则上下文不会跟踪该对象。

然后,拨打DataContext上的GetChangeSet method。从那里,将DeletesUpdatesInserts属性公开的引用与您的对象进行比较。

如果在任何这些列表中找到了引用,那么该列表将跟踪您的对象,您可以从那里继续。

答案 1 :(得分:-1)

检查对象的id是否为0。

if someId = 0
  Insert();
else
  Update();

Simples