Entity framework 如果edmx文件位于另一个项目中,则实体SQL不起作用

Entity framework 如果edmx文件位于另一个项目中,则实体SQL不起作用,entity-framework,entity-sql,Entity Framework,Entity Sql,我正在尝试使用enititysql查询数据,但是如果edmx文件在另一个项目中,将引发异常。下面是我的测试步骤 创建类库项目并向其中添加edmx文件,然后从数据库创建 创建控制台应用程序,添加要引用的类库项目,并将app.config文件复制到此项目 编写如下代码 using (NorthwindEntities context = new NorthwindEntities()) { string queryString = @"SELECT VALUE cus

我正在尝试使用enititysql查询数据,但是如果edmx文件在另一个项目中,将引发异常。下面是我的测试步骤

创建类库项目并向其中添加edmx文件,然后从数据库创建

创建控制台应用程序,添加要引用的类库项目,并将app.config文件复制到此项目

编写如下代码

using (NorthwindEntities context = new NorthwindEntities())
{
    string queryString = @"SELECT VALUE cus 
                           FROM NorthwindEntities.Customers AS cus 
                           WHERE cus.ID > 10";
    ObjectQuery<Customers> cusQuery = 
        context.CreateQuery<Customers>(queryString);
    List<Customers> cusList = cusQuery.ToList();
}
运行Console应用程序项目时,会引发异常:“ID”不是当前加载架构中“NorthwindModel.Customers”类型的成员

似乎该模式没有加载到项目中,有人有想法吗? 附加问题:在这个查询中,我选择了这个类型的所有属性,如果我只选择了一些属性,如何返回一个匿名类型的ObjectQuery


任何建议都将不胜感激。

这不是EF问题

您已经手工编写了SQL语句,但没有使用EDMX文件中的表定义

如果您尝试在SQLServer的查询提示符中执行SQL语句,您将看到它在那里也失败了

试着这样做:

var cus = from customers in context.Customers select customers;
var cusList = cus.ToList();

您是否已检查生成的NorthwindModel.Customer是否确实具有完整的caps ID属性?感谢您的快速回复。是的,edmx文件是从数据库生成的,所有属性都在模型中。您使用的是哪个版本的EF?EF4.3.1,此外,我尝试使用自跟踪实体模板,并通过添加.tt文件作为链接在另一个类库项目中创建模型。测试项目抛出相同的错误。没有ID列,但有CustomerId,因此生成的NorthwindModel.Customer也没有ID属性。试试CustomerId!