使用枚举作为返回类型映射标量UDF

时间:2015-05-01 18:30:07

标签: c# linq entity-framework entity-framework-6

我有自定义存储约定,用于将LINQ查询中的方法调用转换为标量UDF函数。所有函数都使用DbFunction属性进行修饰。一切都按预期工作。您可以看到代码here

但我想修改一些方法来返回枚举而不是int。我认为它应该有效,但我总是得到以下例外。

  

“Some.Documents.Docs”类型上指定的方法“Some.Documents.AccessType GetAccessType(Int64,Int64)”无法转换为LINQ to Entities存储表达式,因为其返回类型与返回类型不匹配由其DbFunction属性指定的函数。

修改后的方法如下所示。

[DbFunction("UDF", "GetAccessType")]         
public static AccessType GetAccessType(long documentId, long userId)
{
    throw new NotImplementedException();
}

我需要做些什么才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

我看到你自己正在处理DbFunction属性。为什么?您可以使用System.Data.Entity.DbFunctionAttribute并为您处理。

我猜你的UDF返回bigint,而你的枚举是int(默认值)。只需使用public enum MyEnum : long即可。它适用于我的EF 6.1.x.