首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于ObjectQuery.Execute

关于ObjectQuery.Execute
EN

Stack Overflow用户
提问于 2011-07-11 23:54:27
回答 1查看 317关注 0票数 2

我想问一下ObjectQuery.Execute方法。

假设我有这样的代码:

代码语言:javascript
复制
var cons = context.Contacts.Execute(MergeOption.AppendOnly);

//entries will be empty
var entries = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added |
              EntityState.Deleted | EntityState.Modified | EntityState.Unchanged);

据我所知,ObjectQuery.Execute将强制执行ObjectQuery。

在上面的代码中,当它被执行时,EF会向Database发送一些命令,

和cons变量,填充对象作为来自数据库的结果。

但是,为什么这些对象没有附加到ObjectContext?您可以检查这些对象的ObjectStateEntries (条目variabel将为空)。

那么,为什么我们必须设置MergeOption,而这些对象最终不会附加到ObjectContext呢?

为什么这些对象没有附加到ObjectContext?

你能告诉我如何在实际应用中使用ObjectQuery.Execute方法吗?因为我对它的功能感到困惑。

EN

回答 1

Stack Overflow用户

发布于 2015-09-24 02:59:38

Execute方法返回ObjectResult而不是ObjectQuery。因此,对于要物化的实体,我们必须将ObjectResult中的数据流式传输到任何其他集合类型。我们还可以遍历ObjectResult,以便通过上下文来物化和跟踪实体。

在您的示例中,您可以调用ToList(),这将使所有实体具体化并跟踪更改。因为无论如何都要调用ToList(),所以不需要调用Execute()。

代码语言:javascript
复制
var cons = context.Contacts.Execute(MergeOption.AppendOnly).ToList();
var entries = context.ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6652924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档