.net 在实体框架中的Where子句中使用基于枚举的var会引发异常

.net 在实体框架中的Where子句中使用基于枚举的var会引发异常,.net,entity-framework,enums,where-clause,.net,Entity Framework,Enums,Where Clause,我有以下引发异常的代码(详细信息见下面的代码注释)。我只是尝试使用枚举的一个实例作为Where子句的一部分。我理解这条消息,但我不明白为什么EF不能解析Int32枚举 如果我将枚举复制到一个Int32,然后对其进行过滤,它是可以工作的,但是它看起来非常混乱 Enum MyEnum As Int32 Zero One Two End Enum Shared Function GetStuff(ByVal EnumValue As MyEnum) As IQuerya

我有以下引发异常的代码(详细信息见下面的代码注释)。我只是尝试使用枚举的一个实例作为Where子句的一部分。我理解这条消息,但我不明白为什么EF不能解析Int32枚举

如果我将枚举复制到一个Int32,然后对其进行过滤,它是可以工作的,但是它看起来非常混乱

    Enum MyEnum As Int32
    Zero
    One
    Two
End Enum
Shared Function GetStuff(ByVal EnumValue As MyEnum) As IQueryable
    Dim Db As New MainDb
    Dim DetailList As IQueryable
    Dim MyInt As Int32 = EnumValue

    ' PostalProviderId is an Int column in SQL.
    'DetailList = From D In Db.DeliveryService Where D.PostalProviderId = EnumValue ' This fails.
    DetailList = From D In Db.DeliveryService Where D.PostalProviderId = MyInt ' This works.

    ' The following attempt to enumerate the results yields;
    ' **** System.NotSupportedException was unhandled by user code
    ' **** Message = "Unable to create a constant value of type 'Closure type'. Only primitive types ('such as Int32, String, and Guid') are supported in this context."
    ' **** Source = "System.Data.Entity"
    For Each Thingy In DetailList
        Console.WriteLine(Thingy.ToString())
    Next
    Return DetailList

End Function

有比将枚举值复制到本地int更优雅的解决方案吗?

问题是实体框架在构建t-SQL以获取后面的int时不知道如何开发枚举。简而言之,您必须将其存储在一个临时变量中并使用它

有关更多信息,请访问:


问题在于实体框架在构建t-SQL以获取其背后的int时不知道如何开发枚举。简而言之,您必须将其存储在一个临时变量中并使用它

有关更多信息,请访问:


有点像naff的错误。谢谢,这有点像naff。谢谢