Linq到实体自定义功能中选择

时间:2017-05-15 14:05:12

标签: linq linq-to-entities

在Linq to Entities中,不能使用标准c#方法修改“select”子句中的结果,需要规范函数。

我需要调用这样的查询:

   case class Wrapper[T](wrapped: T)
   trait Wrapping { implicit def wrapIt[T](x: Option[T]) = x.map(Wrapper(_))

   class NotWorking extends Wrapping { def foo: Option[Wrapper[String]] = Some("foo") }

   class Working extends Wrapping { 
      def foo: Option[Wrapper[String]] = {
        val why = Some("foo")
        why
      }
    }

“MapToRole”是一个C#方法,只是为了对linq查询进行整理。

有没有办法创建一个可被实体框架“linq to Entity”解析器接受的自定义c#函数?

我找到了查询过滤器的解决方案,但没有找到数据格式化的解决方案。

1 个答案:

答案 0 :(得分:2)

看来,由于它是一个简单的转换,因此没有理由需要由提供商进行翻译。我建议您在AsEnumerable()之前添加Select()至"分离"您对提供者的预测。

或者,您可以在数据类型中使用CTypes属性,并在模型中执行转换。

作为旁注,在您的应用程序层中执行此特定转换意味着您只是通过枚举值而不是字符串 - 因此来自提供程序的数据较少。