Entity framework core ToQuery是否仅适用于测试?

Entity framework core ToQuery是否仅适用于测试?,entity-framework-core,Entity Framework Core,在Entity Frameowork Core中,可以使用modelBuilder.query.ToQuery()在上下文中定义所谓的查询。在本文中,它说这是一种替代方法,可以将SQL视图添加到允许内存测试的上下文中。假设我更喜欢将LINQ表达式映射到视图模型,而不是映射到SQL视图,那么ToQuery是否适合在生产工作负载下使用呢?在这种情况下,它总是这样,直到它不适用为止。 我的意思是,我使用了相同的方法,虽然没有在“巨大”流量负载下使用,但它可以轻松处理“小型/中型”流量解决方案。 所以,

在Entity Frameowork Core中,可以使用modelBuilder.query.ToQuery()在上下文中定义所谓的查询。在本文中,它说这是一种替代方法,可以将SQL视图添加到允许内存测试的上下文中。假设我更喜欢将LINQ表达式映射到视图模型,而不是映射到SQL视图,那么ToQuery是否适合在生产工作负载下使用呢?

在这种情况下,它总是这样,直到它不适用为止。 我的意思是,我使用了相同的方法,虽然没有在“巨大”流量负载下使用,但它可以轻松处理“小型/中型”流量解决方案。
所以,在它成为一个瓶颈之前,因为它作为一个特性足够稳定,可以用于生产,我看不出有任何理由不去追求它

也就是说,如果在任何时候负载变得“太大”,您都可以在以后选择合适的视图,这将始终确保有效地使用db优化


还要注意,使用对象的方式至关重要。添加在“简单”选择中总是很好的,但是对其进行复杂调用可能会使事情“膨胀”,或者,假设在这里,会导致复杂查询上的客户端求值冲突

“直到它成为阻塞点”,ToQuery会比DbSet上的常规LINQ查询更像阻塞点吗?不,它们最终是一样的,但因为它会像其他实体一样被暴露,在某个时候,人们可能会忘记它并没有处于“最佳状态”,并滥用它,或者在不需要它的情况下包含它。创建视图的优点是,数据库框架可能会使它工作得“更快”,让实体只对响应进行反序列化,而不是每次都构造select并运行它(但其中涉及到一些笑话,它并不是每次都被编译,这使得它成为一个足够好的解决方案,直到它成为路径的主要麻烦制造者)