我正在尝试通过外键更新EntityFramework 4中的外键关系(使用microsoft sql server数据库)。
我使用.Single()
加载对象,然后尝试设置为Object.ExampleId
(示例表是与C#中的枚举对应的引用表)。然后我在上下文中调用SaveChanges()
。
这样做在本地工作,但在生产服务器上它失败并且似乎挂起。使用调试语句我将范围缩小到我实际设置Id的行。
我能够通过加载整个Example对象并执行Object.Example = loadedExample
而不是Object.ExampleId = exampleId
来解决问题。
我的问题是为什么会这样?其他地方我只能通过设置Id来更新关系。这是一种不好的做法吗?
答案 0 :(得分:1)
问题原来是设置FK id导致实体框架加载具有该id的外键关系的所有成员。在我们的暂存和实时服务器上,该关系中的项目数量要高得多。
这导致请求超时并失败。
解决方案在这里:EF4 and undesired loading of related collection with AddObject