【发布时间】:2011-06-08 13:11:26
【问题描述】:
我正在从书中学习 Entity Framework 4。
我尝试使用 Entity SQL 进行一些查询,如下所示:
using (var context = new BAEntities())
{
string str = "SELECT VALUE c " +
"FROM BAEntities.Contacts " +
"AS c " +
"WHERE c IS NOT OF(BAModel.Customer)";
ObjectQuery<Contact> qry = context.CreateQuery<Contact>(str);
Console.WriteLine(qry.Count());
}
我的查询目的是获取所有联系人类型的对象,而不是客户类型的对象。 其中,Customer 继承自 Contact
但我收到以下错误:
找不到类型“BAModel.Customer”。确保所需的架构 已加载并且命名空间已正确导入。靠近类型名称,第 1 行, 第 64 列。
但是,如果我像这样使用 LINQ to Entities 进行查询:
ObjectQuery<Contact> qry = context.Contacts.Where(c => !(c is Customer));
这样程序就可以正常运行了。
那么,为什么在实体 SQL 中找不到 BAModel.Customer,而我在模型所在的同一个项目中运行代码。
请帮帮我。
提前致谢。
【问题讨论】:
-
不幸的是,比较 EF 查询与您的即席 SQL 并不是一个好的比较。 EF 查询知道如何按照 RDBMS 的预期构造 SQL 查询,而不会出现语法错误。
-
我把比较只是为了说明程序可以正常运行。我只是混淆了为什么使用 Entity SQL EF 找不到模型。
标签: c# entity-framework entity-sql