我正在使用實體框架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
這就是它,謝謝。如果你把它作爲答案,我會把它標爲一個。 –