如果模型正在访问相同的底层数据库,是否有办法从2个不同的实体模型中组合查询。
我的情景是这样的: 我有一个使用EF进行数据访问的框架。(EDM 1) 我有一个客户端应用程序,它使用框架的服务,并使用EF进行自己的数据访问。(EDM2)
在某些情况下,我需要撰写查询并加入跨越2个EDM的实体。
有没有办法在没有从第一个EDM获取内存中的数据的情况下执行此操作,然后在第二个EDM的实体中在内存中应用其他谓词/连接?
我希望我能以正确的方式阐明这一点
修改 @Ladislav Mrnka: 第一个EDM是可重用框架的数据访问层。 将来自此EDM的EF生成实体耦合起来是没有意义的 消费客户的那些 如果我这样做,它会破坏API的可重用性,而且我必须携带额外的膨胀 (每次我想重新部署框架时)(客户端的EF元数据和数据库表)。 这也会使设计师管理模型变得笨拙。
我目前正在使用你提到的第7项作为解决方案而且表现非常糟糕 由于我必须最终返回比使用框架所需的更多数据(即实体) EDM1然后根据基于值的谓词/条件过滤掉不需要的EDM1 来自第二个EDM中实体的属性。最终结果是性能大幅下降,DBA不满意。
出于这个原因,我最终推出了检索实体所需的逻辑 到SPROC,我可以访问EDM使用的表并应用所需的谓词 并将整个查询在数据库中运行,而不是将数据存入内存 然后过滤掉不必要的.Downside是我不能使用LINQ
你提到的第8项听起来很有趣,但从听起来我怀疑这一点 你在设计时得到了很好的打字,或者你呢? 你能在某个地方上传你的代码样本,以便我可以尝试一下吗?
答案 0 :(得分:5)