我使用的是带有Framework4.0的Visual Studio2010Express,如果我没记错的话,它是Entity Framework4附带的。
我的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学习版不包含Entity Framework4?因为标准版是这样做的,而express版使用的是旧版本,这会很奇怪。
当然,我可以使用经典的DataReader,但ExecuteStoreQuery要好得多。
有什么想法吗?
编辑:我将查询更改为真实的查询,以解释为什么ExecuteStoreQuery有时更容易进行复杂的查询(至少对于LINQ to Entities的初学者而言)。
发布于 2010-08-25 16:21:35
为什么不使用LINQ to Entities呢?
context.Spells.Where(s => s.ID.Equals(1));发布于 2012-05-02 09:24:58
我也遇到了同样的问题,ExecuteStoreQuery没有出现。我发现我的项目默认使用.NET框架3.5,并且在使用.NET框架4时出现ExecuteStoreQuery。
发布于 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实例。
当然,这是不可取的,但会让您的遗留项目按照您期望的那样编译和工作。
https://stackoverflow.com/questions/3563959
复制相似问题