![](/img/trans.png)
[英]Entity Framework: ObjectContext.ExecuteStoreQuery produces detached objects
[英]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.