[英]How to reference enum type in entity sql
我有以下(簡化的)實體SQL查詢:
SELECT VALUE a
FROM Customers AS a
WHERE a.Status NOT IN { 2, 3 }
Status
屬性是枚舉類型,稱為CustomerStatus
。 枚舉在EDMX文件中定義。
實際上,此查詢不起作用,拋出一個異常,即CustomerStatus與Int32不兼容(其基礎類型為 int)。 但是,無論我為枚舉名稱添加了什么名稱空間,我都無法找到一種方法來為IN {}
子句定義CustomerStatus值的列表。 例如,
SELECT VALUE a
FROM Customers AS a
WHERE a.Status NOT IN { MyModelEntities.CustomerStatus.Reject, MyModelEntities.CustomerStatus.Accept }
不能正常工作,拋出異常說它在容器中找不到MyModelEntities.CustomerStatus或類似的東西。
最終,我求助於將Status
強制轉換為int,例如
SELECT VALUE a
FROM Customers AS a
WHERE CAST(a.Status AS System.Int32) NOT IN { 2, 3 }
但我希望有一個更優雅的解決方案。
噢,您正在直接編寫實體SQL。 我明白了。有什么理由不使用DbSet而不是手工編寫Entity SQL? 總是可以做
var statuses = new [] { Status.A, Status.B };
var query = context.SomeTable.Where(a => !statuses.Contains(a.Status)).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.