gpt4 book ai didi

entity-framework - 在 ADO.Net 数据服务中,如何检查实体是否已在上下文中?

转载 作者:行者123 更新时间:2023-12-01 09:40:35 24 4
gpt4 key购买 nike

我有一个用于导入数据的 ADO.Net 数据服务。大多数实体都链接到许多实体。要在导入期间执行此操作,我首先创建这些实体,保存它们,然后使用 .SetLink(EntityImport, "NavigationProperty", CreatedEntity)。现在我遇到的第一个问题是上下文并不总是知道 CreatedEntity(这是由于每个实体都是独立导入的,并且在创建每个项目时都会创建一个上下文 - 我想保留这个功能- 即我试图避免“只使用一个上下文”作为答案)。

所以在尝试调用 SetLink 之前,我有一个 .AddToCreatedEntityType(CreatedEntity)。这当然是第一次工作,但在第二次通过时,我收到错误消息“上下文已经在跟踪实体”。

有没有办法检查上下文是否已经在跟踪实体(context.Contains(CreatedEntity) 尚未实现)?我正在考虑尝试 try catch 并避免错误,但这似乎每次通过都会创建一个新的 CreatedEntity 。看起来我每次都需要使用 LINQ to Data Services 来获取 CreatedEntity,但这似乎效率低下 - 有什么建议吗?

最佳答案

我认为你应该看看 EntityState您的实体的属性(property)。

只有当它的值是 EntityState.Detached 时,你才必须将它添加到你的上下文中。

不要忘记以下备注:

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

我会创建一个扩展方法:

public static class EntityObjectExtensions
{
public static Boolean IsTracked(this EntityObject self)
{
return (self.EntityState & EntityState.Detached) != EntityState.Detached;
}
}

关于entity-framework - 在 ADO.Net 数据服务中,如何检查实体是否已在上下文中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/228595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com