C# EF 4存储context.Refresh()和context.[Entity]之间的差异。包括(";NavigationProperty";)
(1) 有人能解释一下使用下面描述的两种不同方法进行数据访问的区别吗C# EF 4存储context.Refresh()和context.[Entity]之间的差异。包括(";NavigationProperty";),c#,entity-framework,entity-framework-4,C#,Entity Framework,Entity Framework 4,(1) 有人能解释一下使用下面描述的两种不同方法进行数据访问的区别吗 context.Refresh(RefreshMode.ClientWins, context.ParentEntity); 及 (2) 对于涉及子实体/导航属性的更复杂的示例,这两个调用之间是否存在根本性差异: context.Refresh(RefreshMode.ClientWins, context.ParentEntity); context.Refresh(RefreshMode.ClientWins, cont
context.Refresh(RefreshMode.ClientWins, context.ParentEntity);
及
(2) 对于涉及子实体/导航属性的更复杂的示例,这两个调用之间是否存在根本性差异:
context.Refresh(RefreshMode.ClientWins, context.ParentEntity);
context.Refresh(RefreshMode.ClientWins, context.ChildEntity);
及
(3) 最后,我们有一些代码执行两种方法的组合:
context.Refresh(RefreshMode.ClientWins, context.ParentEntity.Include("ChildEntities"))
当一种方法应该用于另一种方法时,或者如果它们在功能上都是等效的,我正试图让我的头脑清醒起来。我认为你对
刷新和包含的想法是错误的
“Refresh
具有允许使用数据源中的数据刷新对象以及作为解决冲突的机制的双重目的”(来自)
“Include
指定要包括在查询结果中的相关对象。”
所以要回答您的问题,刷新
是一个无效的方法,而不是查询。。。它用于管理并发性和解决冲突。。。我不确定你是否试图从中得到结果,但我无法想象它能很好地工作
您的(来自上下文中的pe…
语句是使用Include
方法的查询,该方法(听起来像)在查询结果中包含指定的对象
当您不确定这些方法在做什么时,查看MSDN页面中的方法通常会有很大帮助
希望这有帮助
return (from pe in context.ParentEntity.Include("ChildEntities") select pe).ToList();
context.Refresh(RefreshMode.ClientWins, context.ParentEntity.Include("ChildEntities"))