繁体   English   中英

如何在EF上运行SQL查询?

[英]How to run SQL Queries on EF?

我正在使用C#和WPF作为前端的EF。 我需要提供一个UI,以便用户可以创建自己的查询并获得结果。 用户界面将是表格列表和要从中选择的列表(对UI不满意。需要改进但我脑子里有新的标记)。

所以我的问题是如何创建,合并(现有查询)和执行查询。

有sql类Entity Client提供程序,objectquery类。 我使用了ObjectQuery

string querystring = @"SELECT PrjDev FROM prjscenario"; 
ObjectQuery<PrjDev> prjdevquery = new ObjectQuery<PrjDev>(querystring, ptxobjcontext);
string cpmmandtext = prjdevquery.CommandText;
int prjdevnum =  prjdevquery.Count();

这是工作。 但是当我运行一些复杂的查询时。 它不起作用。 示例代码:

string querystring = @"SELECT PrjDev FROM prjscenario WHERE PrjDev.PrjDevType = 10";

错误:

'PrjDevType'不是'Transient.collection [Skm.Ptx.Data.Emf.PrjDev(Nullable = True,DefaultValue =)]'的成员。 要提取集合元素的属性,请使用子查询迭代集合。 近简单标识符,第1行,第45列。

任何想法,为什么它对一个简单的查询有好处,但它不适用于复杂的查询?

先谢谢你,N

作为参数传递给ObjectQuery<T>构造函数的查询不是SQL查询,而是ESQL(实体SQL)查询。 虽然语法相似,但它们是非常不同的语言。 您可以在此页面上了解有关ESQL的更多信息。

如果要对ObjectContext的底层数据库执行真正的SQL,可以使用ObjectContext.ExecuteStoreQuery方法,或者只是通过ObjectContext.Connection属性检索连接,并从那里编写“经典”ADO.NET代码。

暂无
暂无

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

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