首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架:在ObjectContext中找不到ExecuteStoreQuery

实体框架:在ObjectContext中找不到ExecuteStoreQuery
EN

Stack Overflow用户
提问于 2010-08-25 16:06:38
回答 3查看 4.4K关注 0票数 1

我使用的是带有Framework4.0的Visual Studio2010Express,如果我没记错的话,它是Entity Framework4附带的。

我的ObjectContext定义为:

代码语言:javascript
复制
public partial class CreaturesEntities : global::System.Data.Objects.ObjectContext

我尝试使用ExecuteStoreQuery:

代码语言:javascript
复制
using System.Data.Objects;
using System.Data.Entity;
[...]
context = new CreaturesEntities();
string query = "select type, min(value) value from saving_throw where ";
string conditions = "(classe_id=" + classe_id + " and level=" + level1 + ")";
if (classe.subclass1_id != null)
    conditions += " or (classe_id=" + classe.subclass1_id + " and level=" + level1 + ")";
if (classe.subclass2_id != null)
    conditions += " or (classe_id=" + classe.subclass2_id + " and level=" + level2 + ")";
if (classe.subclass3_id != null)
    conditions += " or (classe_id=" + classe.subclass3_id + " and level=" + level3 + ")";
query = query + conditions + " group by type";
var q = context.ExecuteStoreQuery<SimpleNumber>(query);
// SimpleNumber is a class with an int property, I suppose ExecuteStoreQuery<Integer> wouldn't work?

当我键入" context .“时,我在上下文菜单中找不到ExecuteStoreQuery,这意味着无论出于什么原因,它都不可用。我在ObjectContext中找不到任何关于缺少方法的东西。这是否意味着Visual Studio 2010学习版不包含Entity Framework4?因为标准版是这样做的,而express版使用的是旧版本,这会很奇怪。

当然,我可以使用经典的DataReader,但ExecuteStoreQuery要好得多。

有什么想法吗?

编辑:我将查询更改为真实的查询,以解释为什么ExecuteStoreQuery有时更容易进行复杂的查询(至少对于LINQ to Entities的初学者而言)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-25 16:21:35

为什么不使用LINQ to Entities呢?

代码语言:javascript
复制
context.Spells.Where(s => s.ID.Equals(1));
票数 0
EN

Stack Overflow用户

发布于 2012-05-02 09:24:58

我也遇到了同样的问题,ExecuteStoreQuery没有出现。我发现我的项目默认使用.NET框架3.5,并且在使用.NET框架4时出现ExecuteStoreQuery

票数 1
EN

Stack Overflow用户

发布于 2014-04-04 16:21:22

我在将遗留项目升级到VS2013/MVC4/EF6.1时遇到了这个问题

我找到的最好的解决方案是this EF 6.x EntityObject Generator

还有一种我最初采用的老生常谈的方法:

我将edmx属性中的Code Generation Strategy更改为Legacy ObjectContext,并删除了T4模板文件。

这正如我所期望的那样生成了模型代码,但由于EF6中的名称空间更改,它无法编译。因此,我进入了生成的代码文件,并替换了没有用System.Data.Entity.Core.X解析的每个System.Data.X实例。

当然,这是不可取的,但会让您的遗留项目按照您期望的那样编译和工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3563959

复制
相关文章

相似问题

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