我们将根据现有应用程序创建产品。我们现有的应用程序正在使用实体框架6,Web API 2,ninject。因此,我们使用的是相同的技术,而不是创建新的设计并使用新的技术,即实体框架6,Web API 2,ninject。将会有繁重的数据库操作。我们能够将完整的操作划分为小任务。因此,我们决定使用多线程。我的问题是。
1)如何配置ninject在每个线程调用上创建一个新的dbcontext?
2)线程完成其操作后,无论其余线程是否完成其操作,数据库更改都应立即生效。
3)完成每个线程操作后,应将线程及其dbcontext一起处置。
4)在实体框架中使用多线程会不会有任何副作用。
一个编码示例将不胜感激。
答案 0 :(得分:0)
1)如何配置ninject在每个线程调用上创建一个新的dbcontext?
使用Tasks。在每个Task的内部,在using
块中创建一个新的DbContext。我猜在ninject中这意味着Transient范围。
2)线程完成其操作后,无论其余线程是否完成其操作,数据库更改都应立即生效。
在每个任务中使用单独的DbContext应该可以做到这一点。
4)在实体框架中使用多线程会不会有任何副作用。
您可能会在数据库中遇到等待锁定,资源耗尽或死锁的情况。
3)完成每个线程操作后,应将线程及其dbcontext一起处置。
使用任务,您无需显式管理线程。
一个编码示例将不胜感激。
不清楚您为什么要在客户端中使用并行性。如果您可以解释一下,包括有关数据库的详细信息,则可能有相关的编码示例。否则可能会很清楚,客户端的多线程只是没有帮助。