使用 Linq-to-Sql:
MyClass obj;
...
// need to delete this object
dataContext.GetTable(obj.GetType()).DeleteOnSubmit(obj);
但是
我不知道 obj
是否已附加到数据上下文。如果没有,最后一次调用 DeleteOnSubmit 会引发异常。
必须有一种简单的方法来判断 obj
是否附加到 dataContext
- 但我看不到任何明显的东西。
你是怎么做到的?
最佳答案
虽然您可能想要查看您的设计,但由于这类事情应该是您可以确定性地弄清楚的事情,所以它是可能的。
不幸的是,确定对象是否已附加(或者,在 L2S 的内部命名法中,“已跟踪”)的确切调用要求您调用 Context.Services.ChangeTracker.GetTrackedObject
,它是 内部
。我能看到的最接近的事情是调用 Table.GetOriginalEntityState
,传入有问题的实体。如果返回值为 null
,则该对象未被跟踪(未附加)。如果返回值为非null
,则对象被跟踪(附加)。
请注意,我还没有实际测试过它,但查看 Reflector 中的代码给我的印象是它应该适合你。
关于c# - 如何判断 Linq 对象是否已附加到数据上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1940716/