实体框架“找不到查询模式的实现”
Posted
技术标签:
【中文标题】实体框架“找不到查询模式的实现”【英文标题】:Entity Framework "Could not find an implementation of the query pattern" 【发布时间】:2017-10-22 09:41:04 【问题描述】:我正在尝试使用实体框架,但我不断收到错误消息“底层提供程序在打开时失败。”。我将密码存储在 getConnectionString 函数的代码中,提供了一个有效的连接字符串,我知道它可以工作,因为我始终使用该函数(尽管在我的非实体框架程序中)。我在 Model1 文件中定义了客户。客户是一个数据库。
// gets valid connection string
string cs = getConnectionString();
var entityConnectionStringBuilder = new EntityConnectionStringBuilder();
entityConnectionStringBuilder.Provider = "System.Data.SqlClient";
entityConnectionStringBuilder.ProviderConnectionString = cs;
entityConnectionStringBuilder.Metadata = "res://*";
CUSTEntities1 CustContext = new CUSTEntities1(entityConnectionStringBuilder.ToString());
var q = (from i in CustContext.Customers
where i.CustLen == 15
select new CustomerClass
fid1 = i.fid1,
fid21 = i.fid2,
custlen = (int)i.CustLen
).ToList<CustomerClass>();
我是 Entity Framework 的新手,正在尝试制作一个简单的测试应用程序来帮助我理解它。任何帮助将不胜感激。我从头开始重建项目,以确保我拥有 EF 所需的所有部件。
【问题讨论】:
“客户”是 IEnumerable 类型吗?这是一个示例:***.com/questions/8215773/… 我看到那个帖子并试图模仿它但没有成功 想想看,你应该小心最新的编辑。它改变了问题,现在可能应该是一个新问题(您可能想在其中提供您当前的CUSTEntities1
【参考方案1】:
您应该从上下文中查询,EF 不知道如何单独处理该类。
查询需要以
开头from customer in context.Customers
由于您似乎使用的是模型优先或数据库优先的方法,因此上下文应该已经包含一个 DbSet。在您的情况下,它位于CUSTEntities1
。
【讨论】:
我试过了,但是 a.Customers 对我不可用。 @Missy 你是如何创建模型的? 是的——我使用的是数据库优先方法。我不明白为什么客户对我不可用。您对变量名称的建议很好。 @Missy 在这种情况下,您可能想要重新创建模型(只是为了确保context.Customer
也不可用?)
好的。我去做。 Context.Customer 也不可用 - 正确。以上是关于实体框架“找不到查询模式的实现”的主要内容,如果未能解决你的问题,请参考以下文章