C# 使用LinqKit的动态查询太慢了!在这种情况下,存储过程能更好吗?

C# 使用LinqKit的动态查询太慢了!在这种情况下,存储过程能更好吗?,c#,entity-framework,stored-procedures,linqkit,C#,Entity Framework,Stored Procedures,Linqkit,我正在使用LinqKit使用动态生成的过滤器构建查询 该查询从数据库中获取一个相当大的对象图来执行计算,并对该数据进行一些其他修改。只要我在查询中不使用Includes,就可以很快从数据库中获取所需的主要实体。但不幸的是,我需要许多it相关实体来执行所需的计算 每次我添加一个Include,这将转换为SQL中一个新的嵌套子查询。我有大约8或9个Inlcudes,因此这就转化为大量的嵌套子查询。查询将永远无法返回数据 我希望所有这些嵌套子查询都从SQL中消失,但要按照我希望的方式从应用程序端使用L

我正在使用LinqKit使用动态生成的过滤器构建查询

该查询从数据库中获取一个相当大的对象图来执行计算,并对该数据进行一些其他修改。只要我在查询中不使用
Includes
,就可以很快从数据库中获取所需的主要实体。但不幸的是,我需要许多it相关实体来执行所需的计算

每次我添加一个
Include
,这将转换为SQL中一个新的嵌套子查询。我有大约8或9个
Inlcudes
,因此这就转化为大量的嵌套子查询。查询将永远无法返回数据

我希望所有这些嵌套子查询都从SQL中消失,但要按照我希望的方式从应用程序端使用LinqKit来塑造SQL是有点困难的

我认为,对于这种特定情况,最好按照我希望SQL的方式编写一个存储过程,并从实体框架调用它

我的问题是我不知道如何使用存储过程在应用程序端获取对象图。我可以让EF生成一个
ComplexType
,它将所有数据都包含在一个“实体”中,但进行计算的代码等待一个特定实体对象图(主实体及其相关实体),这样代码就不知道那是什么
ComplexType
。我真的不想重写计算引擎来使用这个
ComplexType
。我可以将结果映射到单个实体,但只返回该实体。我希望相关的实体也被返回

看来我被夹在岩石和疯狂的地方之间了


有人能提出什么建议吗?

我们也有类似的问题。我们最终构建SQL视图,并对视图进行查询。我还认为这是来自CQRS模式的想法,基本上,您可以将读模型和写模型分开。

谢谢您的输入。我也考虑过查询视图,但由于我的计算引擎需要特定的对象图,我如何将查询的视图映射到引擎所期望的实体图?它可以在后端服务中计算吗?有时,如果涉及到计算,您可以在后端服务上进行,并将其放入查询表中。遗憾的是,所有计算都是在应用程序端进行的。这是一个大量的代码,它将是一个太多的负担重写它。这就是为什么我想知道获取所需对象图的替代方法。