我有以下(简化的)实体 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 或类似的东西。
最终我求助于将 int 强制转换Status
为 int,例如
SELECT VALUE a
FROM Customers AS a
WHERE CAST(a.Status AS System.Int32) NOT IN { 2, 3 }
但我希望有一个更优雅的解决方案。