更新EF 4.0中的外键关系通过设置Id

问题描述:

我试图通过外键更新EntityFramework 4(与Microsoft SQL Server数据库)中的外键关系。更新EF 4.0中的外键关系通过设置Id

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

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

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

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

+1

不,它是不坏的做法 - 一旦FK暴露你应该使用它们来设置关系。必须有别的东西。在你的开发中。机器使用SQL分析器并检查分配Id时是否没有延迟加载。 – 2011-05-23 16:19:07

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

这导致请求超时并失败。

的解决方案是在这里:EF4 and undesired loading of related collection with AddObject

+1

您是否找到了解决方案? – 2012-05-16 14:29:40