Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net EF4是否总是为所有相关实体生成update语句,即使只有一个实体实际发生了更改?_.net_Entity Framework_Entity Framework 4 - Fatal编程技术网

.net EF4是否总是为所有相关实体生成update语句,即使只有一个实体实际发生了更改?

.net EF4是否总是为所有相关实体生成update语句,即使只有一个实体实际发生了更改?,.net,entity-framework,entity-framework-4,.net,Entity Framework,Entity Framework 4,.NET4,EF4 我有两个相关的实体,Order和OrderLine。订单包含(引用)订单行 Public Class Order Public Property OrderLine End Class 数据库中的每个实体都有一个表(订单表、订单行表)。每个表都有一个timestamp列,EF4模型是用ConcurrencyMode=Fixed为每个列的timestamp表设置的 我更改了订单,但未更改订单行。当我调用SaveChanges时,EF4似乎会为订单行生成一个更新查询

.NET4,EF4

我有两个相关的实体,Order和OrderLine。订单包含(引用)订单行

Public Class Order

    Public Property OrderLine

End Class
数据库中的每个实体都有一个表(订单表、订单行表)。每个表都有一个timestamp列,EF4模型是用ConcurrencyMode=Fixed为每个列的timestamp表设置的

我更改了订单,但未更改订单行。当我调用SaveChanges时,EF4似乎会为订单行生成一个更新查询,即使订单行上没有任何更改。最终结果是,数据库响应EF4 Update命令更新了订单行的时间戳,但没有更新任何内容,因为订单行上没有任何更改

Public Class Order

    Public Property OrderLine

End Class

这就是EF4应该处理的方式吗?如果是,原因是什么?

,您可以尝试联系MS以获得修补程序。可以在保存、保存实体之前分离未修改的实体,然后重新附着实体作为解决方法。据我所知,在.NET Framework 4.5的开发者预览版中,它似乎已被修复,但未获得生产使用许可。

@Casey我无法找到一种方法来请求热修复程序,而无需预付MS费用并希望获得退款,因此,我选择使用变通方法,等待.NET 4.5。@Casey,但我相当肯定它会起作用,因为该漏洞在公共预览版本中似乎确实已修复。谢谢。是否在您的context.savechanges方法中执行分离/保存/重新附着?@Casey是的,我的savechanges调用
GetObjectStateEntries(EntityState.unchange)
,将EF不知道的所有实体保存在单独的列表中,将它们全部分离,调用继承的savechanges方法,最后重新附着所有这些实体。请注意,这种分离和重新连接可能会触发事件(
实体{Reference,Collection}.AssociationChanged
,大多数情况下);你必须确保他们不会给你带来麻烦,明白了。只是为了确保,我认为EF4.1不包括修复?