繁体   English   中英

将大型查询转换为linq to Entity Framework

[英]translate large queries to linq to Entity framework

我有一些非常大的查询,我需要将其转换为linq,因为我们使用的是实体框架,而我不能使用存储过程(破坏了与其他数据库的兼容性)。

使用linqer之类的工具甚至都没有帮助,即使我将其与某些Mod配合使用来生成linq,也存在巨大的性能问题。

那么,在EF失败的情况下,最佳选择是什么?

请不要要求我将其分为几个小查询,因为这是不可能的。

将其移至“答案”,因为我想说的内容太长,无法发表评论。

听起来您正在遇到ORM的固有限制。 尝试执行代码中的所有操作都不会获得完美的性能。 听起来您正在尝试使用像T-SQL接口这样的ORM,而不是对象和数据的关系实例之间的映射。

您说要维护数据库之间的兼容性,但是如果考虑数据库之间的架构差异,这已经不是问题。 如果您已经在执行模式验证步骤,以确保代码不会中断,那么就没有理由不能使用诸如view之类的东西。

您可以说您不想一整天都支持这些东西,但是简单的一点是,这些东西之所以存在是因为它们解决了某些问题。 如果您批发放弃它们,那么您就不能指望摆脱这个问题。 数据库有些事情干得更好。

因此,我认为您期望技术中无法解决的某些问题。 您需要重新评估您的策略或使用其他工具来实现它。 我认为您可能甚至需要几个不同的工具。

当您的比例较小时,您一直在做的事情可能会奏效。 我可以看到这样的事情实际上已经工作了相当长的时间。 但是,它确实有规模限制,我认为您对此提出了要求。

我认为您需要确定要支持哪些数据库。 说“我们支持所有数据库”是站不住脚的。 然后,比较功能并使用相同的功能。 如果这是MS SQL与MySQL的结合,那么就没有理由不能使用视图或存储过程。

看看LinqKit-这是建立复杂的大型EF查询的非常有用的工具。

http://www.albahari.com/nutshell/linqkit.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM