我正在努力解决以下问题。
我有一个带有表Jobs的数据库,其中包含有关要完成的作业的信息。我遵循 EF 6.0 的 Code First 方法并创建了一个名为Job的 POCO 类。然后我在数据库中查询作业:
DbSet<Job> receivedJobs;
using (var context = new MyContext())
{
receivedJobs = (from j in context.Jobs
select j);
}
使用接收到的集合receivedJobs然后我将进行耗时的优化。
据我了解,上下文的生命周期以及上下文控制的资源以 using 语句的右括号结束。此外,一个好的设计应该在不再需要数据库时立即将资源释放到数据库中。
我的问题是现在我应该怎么做?只需保持数据库上下文处于活动状态,直到我完成耗时的优化任务。或者关闭连接,因为在优化结束之前不需要它。但在后一种情况下,我该如何处理已处理的Job对象,因为我将需要访问它们的一些导航属性,因为上下文已关闭,所以我无法访问。(顺便说一句,Job类的实例中的数据不会因为优化而改变。所以不需要跟踪这些对象的变化,因为不会有任何变化)
希望有人可以帮助我了解在这种情况下推荐的设计是什么。
此致