通过设置 Id 更新 EF 4.0 中的外键关系时出现问题

发布于 2024-11-09 08:57:16 字数 458 浏览 0 评论 0原文

我正在尝试通过外键更新 EntityFramework 4(使用 Microsoft SQL Server 数据库)中的外键关系。

我使用 .Single() 加载对象,然后尝试设置为 Object.ExampleId (示例表是对应于 C# 中的枚举的引用表)。然后我在上下文中调用 SaveChanges()

这样做在本地可以工作,但在生产服务器上会失败并且似乎挂起。使用调试语句,我已将挂起范围缩小到实际设置 Id 的行。

我能够通过加载整个示例对象并执行 Object.Example = returnedExample 而不是 Object.ExampleId = exampleId 来解决该问题。

我的问题是为什么会这样?在其他地方我已经能够通过设置 Id 来更新关系。这是一个不好的做法吗?

I'm trying to update a foreign key relationship in EntityFramework 4 (with a microsoft sql server database) via a foreign key.

I load the object using .Single() and then try set to the the Object.ExampleId (The Example table is a reference table that corresponds to an enumeration in C#). Then I call SaveChanges() on the context.

Doing so works locally, but on production servers it fails and appears to hang. Using debug statements I've narrowed the hang down to the line where I actually set the Id.

I was able to fix the problem by loading the entire Example object and doing Object.Example = loadedExample instead of Object.ExampleId = exampleId.

My question is why is this the case? Other places I have been able to update relationships just by setting the Id. Is this a bad practice?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

征﹌骨岁月お 2024-11-16 08:57:16

问题原来是设置 FK id 导致实体框架加载具有该 id 的外键关系的所有成员。在我们的临时服务器和实时服务器上,这种关系中的项目数量要高得多。

这导致请求超时并失败。

解决方案在这里: EF4 和使用 AddObject 意外加载相关集合

The problem turned out to be that setting the FK id caused entity framework to load all the members of the foreign key relationship that had that id. On our staging and live servers the number of items in that relationship was a lot higher.

This caused the request to timeout and fail.

The solution was here: EF4 and undesired loading of related collection with AddObject

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文