上下文中的EF 4 STE区别.Refresh()和上下文。[Entity] .Include(“NavigationProperty”)

时间:2012-06-19 16:43:20

标签: c# entity-framework entity-framework-4

(1)有人可以解释使用下面描述的两种不同方法执行数据访问之间的区别吗?

context.Refresh(RefreshMode.ClientWins, context.ParentEntity);

return (from pe in context.ParentEntity select pe).ToList();

(2)对于涉及子实体/导航属性的更复杂的示例,这两个调用之间是否存在任何根本差异:

context.Refresh(RefreshMode.ClientWins, context.ParentEntity);
context.Refresh(RefreshMode.ClientWins, context.ChildEntity);

return (from pe in context.ParentEntity.Include("ChildEntities") select pe).ToList();

(3)最后,我们有一些代码可以执行两种方法的组合:

context.Refresh(RefreshMode.ClientWins, context.ParentEntity.Include("ChildEntities"))

当一种方法应该用于另一种方法或者它们在功能上都相同时,我试图让我的头缠绕。

1 个答案:

答案 0 :(得分:0)

我认为您对RefreshInclude ...

有错误的想法

Refresh具有双重目的,即允许使用数据源中的数据刷新对象,并且是解决冲突的机制”(来自MSDN

Include指定要包含在查询结果中的相关对象。” (来自MSDN

所以回答你的问题Refresh是一个void方法,而不是一个查询...它用于管理并发和解决冲突......我不确定是否你试图从中获得结果,但我无法想象它的效果非常好!

您的(from pe in context...语句是使用Include方法的LINQ个查询,它(听起来像)包含查询结果中的指定对象。

当你不确定他们在做什么时,看一下这些方法的MSDN页面通常会有所帮助。

希望这有帮助!