【发布时间】:2014-03-19 12:11:09
【问题描述】:
我们在 WCF 服务方法中使用实体框架与数据库通信,最近我们在服务代码上运行代码审查工具。像往常一样,我们通过工具收到了许多审查建议,并且许多审查 cmet 建议处置实体框架上下文对象。所以,我的问题是,如果我在方法中使用实体框架上下文对象,并且一旦我退出该方法,GC 就不会清理上下文对象?我们需要显式地处理上下文对象吗?
【问题讨论】:
-
你现在如何使用它?我通常在 using 块中使用上下文。
-
目前没有使用block。
-
保持它不使用,使用将杀死从其中启动的潜在线程,因为上下文可能会在到达其中的线程启动表单的末尾之前被释放。
-
我认为许多答案都遗漏了一个关键点,那就是 DBContext 经常与 DependencyInjection 一起使用(在 MVC 中)。在这种情况下,DBContext 不是由服务类创建的,而是由框架注入的。在这种情况下,它不应该在服务类中被释放,因为它不是在类中创建的。
标签: c# .net wcf entity-framework