我正在使用实体框架6并且有异常“LINQ to Entities does not recognized the method'System.String AsNonUnicode(System.String)'method”。这是我做的。实体框架6和AsNonUnicode方法
我有表的客户与定义为varchar(254)(非Unicode)的电子邮件列。
在我的映射我有以下行:
Property(t => t.Email).IsUnicode(false);
当我把我的查询是这样的:
var q = context.Customers.Where(t => t.Email == "[email protected]").Select(t => t.FirstName);
一切都很好,不变的是非Unicode。但是,如果我使用以下代码:
string email = "[email protected]";
var q = context.Customers.Where(t => t.Email == email);
生成的变量是Unicode一个,导致不使用索引。
所以,我尝试使用EntityFunctions.AsNonUnicode扩展,这似乎是专为这样的:
string email = "[email protected]";
var q = context.Customers.Where(t => t.Email == EntityFunctions.AsNonUnicode(email));
但是,我得到了一个例外LINQ到实体无法识别方法“System.String AsNonUnicode(系统.String)方法异常,当试图实际查询数据。
我在做什么错?
您确定您的EntityFunctions.AsNonUnicode是EntityFramework.dll中的一个,而不是从System.Data.Entity DLL?它来自哪个名称空间(应该是System.Data.Entity.Core.Objects)?如果您在项目中引用了System.Data.Entity.dll,则应删除它。 – Pawel
这就是它,谢谢。如果你把它作为答案,我会把它标为一个。 –