0

我正在查询一组实体框架对象并通过 WCF RIA 服务将它们投影到灯光开关中。

在我的查询中,我在几个表之间执行连接,其中一个是汇总表的详细信息。我想确定哪个详细项目是列表中的“第一个”项目,并在枚举期间将其与我的投影中的当前项目进行比较。在投影中我想更改我的哪些可用属性设置这个特定投影的属性的原因。

这是这样减少的查询

var result = (from dataItem in (from x in Context.xs
              join y in Context.ys
              on x.property = y.property
              select new {x, y})
              .Select( (model, index) =>
                          new ObjectType 
                              { 
                                  Id = index,
                                  OneOfTwo = model.x.property,
                                  (
                                       from y in Context.ys 
                                       where y.SomeProperty == model.Property
                                       select y)
                                       .OrderBy(list=>list.Id)
                                       .FirstOrDefault()
                                       .ComparedProperty ==model.ComparedProperty
                                   ) 
                                   ? model.AnotherProperty
                                   : model.YetAnotherProerty
                              }
               );

我如何评估该内部查询而不会遇到 DataReader 错误,因为我试图在读取上下文时使用它?

更新:
我做了一些研究并意识到这不是 linq to sql 的问题,而是 linq to entity 的问题。本质上,该操作相当于使用不支持的参数化查询。在这种情况下有什么解决方法?

4

2 回答 2

0

LightSwitch 不会让您拥有一个属性为dynamic的实体。它必须被赋予一个具体的实体,所以我认为你不能做你想做的事,除非动态属性当然是相同的类型(你没有指定)。

于 2012-06-24T06:53:19.813 回答
0

解决方案是将数据投影到 List 集合,我需要数据传输对象并利用 linq 到对象。然后我通过 WCFRIA 服务将我的收藏品暴露给 lightswitch。

于 2012-09-25T18:15:24.943 回答