如何在 WPF 应用程序中管理 DbContext

How to manage DbContext in a WPF Applicatoin

我接手了一个使用了entity framework的WPF项目。我之前的人使用了一个全局 DbContext。经过一番阅读后,很明显这是一种不好的做法,原因有几个。现在我的工作是重构项目以使用 DbContextFactory 并为每个工作单元创建新的 DbContext。 一种方法即 SaveSales 调用另一种方法 IncreaseReceiptNumber。在 IncreaseReceiptNumber 中,一个条目被添加到 table 并调用 SaveChanges。现在在 SaveSales 中,我用 using (var clientDB = dbContextFactory.Create() {} 创建了一个 DbContext。 我的问题是,在这种情况下,我应该将 DbContextSaveSales 传递到 IncreaseReceiptNumber 还是应该 IncreaseReceiptNumber 创建它自己的 DbContext?或者在更一般的意义上,每个方法都应该创建一个新的 DbContext 还是可以通过参数传递 DbContext 如果它属于工作单元?

IMO,这个问题没有单一的答案。您必须针对每种情况决定是否需要多个连接的开销(开销在池中很小,但存在),共享单个 DbContext 是否提供额外的好处(实体已经附加),以及共享是否使事情变得更加困难(您在循环中调用该方法,并冒着“连接已打开”错误的风险)。必须在 case-by-case 的基础上权衡这些因素。对于它的价值,我已经完成了所有这些事情...正如他们所说,使用正确的工具来完成工作。