如何在 Web API 2 中将多线程与实体框架一起使用



我们将从现有应用程序创建一个产品。我们现有的应用程序正在使用实体框架 6、Web API 2、ninject。因此,我们不是创建新设计和使用新技术,而是使用相同的技术,即实体框架 6、Web API 2、ninject。将有大量的数据库操作。我们能够将整个操作划分为小任务。所以我们决定使用多线程。我的问题是。

1( 如何配置 ninject 以在每个线程调用上创建新的数据库上下文?

2( 线程完成其操作后,无论剩余线程是否完成其操作,数据库更改都应立即生效。

3( 完成每个线程操作后,应将线程与其 dbcontext 一起释放。

4(在实体框架中使用多线程会有什么副作用吗?

编码示例将不胜感激。

1( 如何配置 ninject 以在每个线程调用上创建一个新的 dbcontext?

使用任务。 在每个任务中,在using块中创建新的 DbContext。 我想在 ninject 中这意味着瞬态范围。

2( 线程完成其操作后,无论剩余线程是否完成其操作,数据库更改都应立即生效。

在每个任务中使用单独的 DbContext 应该可以做到这一点。

4(在实体框架中使用多线程会有什么副作用吗?

您可能会在数据库中遇到锁定等待、资源耗尽或死锁。

3( 完成每个线程操作后,应将线程与其 dbcontext 一起释放。

对于任务,您没有显式管理线程。

编码示例将不胜感激。

目前尚不清楚为什么要在客户端中使用并行性。 如果你能解释一下,包括关于你的数据库的详细信息,可能会有相关的编码示例。 或者可能很明显,客户端上的多线程是没有帮助的。

最新更新