我正在迈出学习 LINQ to Entity 的第一步,我使用的是 Entity Framework 5。
我必须编写一个 LINQ 表达式,因为结构数据库不允许像 lambda 那样容易编写。
无需赘述,我有以下查询。
var query = from t1 in context.Table1
from t2 in context.Table2
where t1.ExternalId = t2.Id &&
t1.Field1= "some value" &&
t2.Field1 < SOME_NUMBER
select new MyCustomViewModel{
field1 = t1.field1,
field2 = t2.field1,
fieldBySpecificType = MyCustomMapper.Map<SomeType>(t1.field3),
}
正如您在模型的形成中所看到的,称为映射器,它从字符串表示反序列化某些类的重要性。LINQ 并告诉我它无法在 SQL 表达式中翻译此方法。如您所见,我的模型包含来自多个表的字段,因此我无法收集它。
我试图找到一个解决方案,能够说 LINQ 不需要这种方法来转换为 SQL。对属性进行排序的东西。但我所有的努力都没有成功。也许有什么是我的问题的架构解决方案。