【问题标题】:Is it possible create a copy of Entity Framework context's Instance to make parallel queries是否可以创建实体框架上下文实例的副本以进行并行查询
【发布时间】:2017-07-25 16:59:13
【问题描述】:

堆栈:AngularJs、Web API、实体框架、SQL Server。

我需要使用并行查询来查询 SQL Server 以更快地获得结果。

我正在使用 Web API,可以将查询拆分为单独的 Web API 调用,因为它会为每个 Web API 调用创建一个新的数据库上下文副本,但我想知道是否可以这样做在一个 Web API 调用中。 (我假设我需要为每个并行查询创建一个单独的上下文副本,因为实体框架不允许为同一个上下文实例并行调用多个查询)。

我正在使用 Unity DI 容器来创建上下文的实例。

【问题讨论】:

    标签: sql-server entity-framework asp.net-web-api task-parallel-library


    【解决方案1】:

    好吧,您可以设置您的容器以在每次调用时创建一个新实例...在 Unity 上,我建议您创建一个命名条目(使用 PerResolveLifetimeManager)并将现有条目留给其余的应用程序(只是为了隔离方法)...

    哦,记得手动处理这些新上下文!

    【讨论】:

      【解决方案2】:

      如果您正在谈论在多个线程上查询数据库,那么是的,您必须为每个线程启动一个新的上下文实例。但是,如果您以任何方式修改数据库/数据,以验证每个线程中的查询结果,或者您最终可能得到您不一定想要的结果,请小心。

      我之前在数据库中进行过多线程插入(不是真正推荐的路径,但我更多地是为了测试是否可以这样做),您只需要记住将所有连接和实体分开每个线程否则 EF 会骂你。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-19
        • 2013-09-25
        • 2019-05-11
        相关资源
        最近更新 更多