【问题标题】:How to remove entity from local copy without removing from Linq DB如何从本地副本中删除实体而不从 Linq DB 中删除
【发布时间】:2012-10-23 06:41:13
【问题描述】:

我在 Linq 中遇到问题。当我查询时,我得到了表中的所有内容。但我不想加载某些标有特殊键 Y 的行。

因此,为此,我正在迭代并从我的本地副本中删除那些具有特殊键 Y 的文件。

稍后,当我提交更改时,我收到一个错误:

"An attempt was made to remove a relationship between a priceTable and a dataTable. However, one of the relationship's foreign keys (P.Id) cannot be set to null."

为什么会这样?如何在不触及某些行的情况下更改特定实体集的内容?

我希望不从数据库返回标记为Y 的行。我不想在运行时在我的 c# 中使用它们。

【问题讨论】:

  • > 当我查询时,我得到了表中的所有内容。但是我不想加载某些标记为特殊键 Y 的行 - 那么,如果您不需要一些记录,为什么要加载整个表内容?只是不要加载它们。
  • 实际上,我有一个表,实习生链接到许多表.. 所以,在这种情况下,我根据一个条件加载内容,我稍后会过滤,所以.. 如何解决这个问题有什么想法吗?
  • 从 DC 加载后我们不能在本地删除吗?为什么它会抛出异常..为什么我们应该只使用 were() 加载???
  • 在删除多余的行之前尝试执行 ToList()。通过将 IQueryable 结果转换为 IEnuerable 结果,这应该会破坏 db 链接。

标签: c# sql linq linq-to-sql linq-to-entities


【解决方案1】:

丹尼斯是正确的。如果您不需要标记为“Y”的那些记录,则使用 where 子句并排除这些记录。然后,您可以随意修改记录并将其更新回数据库,而不会出现任何问题。

where 子句示例如下所示

var data = from p in context.Persons
           where p.Required == "Y"
           select p;

【讨论】:

  • 您能否提供一些有关异常和您正在使用的代码部分的详细信息?
猜你喜欢
  • 2011-12-25
  • 2023-04-09
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 2018-12-23
  • 1970-01-01
相关资源
最近更新 更多