繁体   English   中英

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

[英]Entity Framework : ExecuteStoreQuery not found in ObjectContext

我正在将Visual Studio 2010 Express与Framework 4.0配合使用,如果我没错,它是随实体框架4一起提供的。

我的ObjectContext定义为:

public partial class CreaturesEntities : global::System.Data.Objects.ObjectContext

我尝试使用ExecuteStoreQuery:

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 Express不包含Entity Framework 4? 由于标准版确实如此,而快速版使用旧版本会很奇怪。

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

任何想法?

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

我遇到了同样的问题,其中不存在ExecuteStoreQuery 我发现我的项目默认为.NET Framework 3.5 ,并且在使用.NET Framework 4时出现ExecuteStoreQuery

将旧版项目升级到VS2013 / MVC4 / EF6.1时遇到了这个问题

我发现的最佳解决方案是EF 6.x EntityObject Generator

我最初也采用了这种骇人听闻的方法:

我将edmx属性中的代码生成策略更改为Legacy ObjectContext并删除了T4模板文件。

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

当然,这是不明智的,但是它将使您的遗留项目按预期进行编译和工作。

为什么不使用LINQ to Entities

context.Spells.Where(s => s.ID.Equals(1));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM