Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定当前数据上下文中是否存在实体?_C#_Linq_Linq To Sql - Fatal编程技术网

C# 如何确定当前数据上下文中是否存在实体?

C# 如何确定当前数据上下文中是否存在实体?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,例如,假设我正在创建或获取一些稍后计划插入、更新或放弃的实体: foreach (var foo in foos) { if (foo.condition) _myEntityCollection.Add(new Some_Entity_Type()); else _myEntityCollection.Add(dc.Some_Entity_Types .Where(t => t.ID == someID).FirstOr

例如,假设我正在创建或获取一些稍后计划插入、更新或放弃的实体:

foreach (var foo in foos) {
    if (foo.condition)
        _myEntityCollection.Add(new Some_Entity_Type());
    else
        _myEntityCollection.Add(dc.Some_Entity_Types
          .Where(t => t.ID == someID).FirstOrDefault());
}
当涉及到(比如)恢复时,我可以这样做:

// Exception gets thrown here if entity didn't exist in data context
_myEntityCollection.ForEach(t => dc.Refresh(RefreshMode.OverwriteCurrentValues, t));

我希望能够遍历
\u myEntityCollection
,并确定该实体是我获取的实体,还是新实体。

您可以使用对象状态管理器测试对象上下文是否知道特定实体

var objectStateManager = context.ObjectStateManager;

ObjectStateEntry temp;
var result = objectStateManager.TryGetObjectStateEntry(myEntity, out temp);
更新


上面的代码适用于实体框架,但问题涉及LINQ到SQL。您可以尝试检查由返回的。它包含三个添加、删除和更新实体的列表。

我应该指定我使用的是Linq DataContext,而不是ObjectContext(我不太熟悉)。您知道DataContext是否存在遗留问题吗?不幸的是,我不知道如何将其从实体框架转换为LINQ到SQL-几年前我只使用过一次LINQ到SQL,而且我不熟悉其内部结构。我(可能)找到了一个解决方案-更新我的答案。这确实会增加很多开销。我可能会创建一个包装器来跟踪上下文中是否存在实体。谢谢