我有自定义存储约定,用于将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();
}
我需要做些什么才能让它发挥作用?
答案 0 :(得分:0)
我看到你自己正在处理DbFunction
属性。为什么?您可以使用System.Data.Entity.DbFunctionAttribute
并为您处理。
我猜你的UDF返回bigint
,而你的枚举是int
(默认值)。只需使用public enum MyEnum : long
即可。它适用于我的EF 6.1.x.