是否应该处理静态方法中的ObjectContext?

时间:2012-02-02 12:53:21

标签: c# entity-framework static

这里只是一个快速的健全检查!

如果我在实例类中有静态方法,例如:

public class myClass 
{

    public static void AMethod() 
    {
        //do somit
    }

}

如果我在方法体中引用IDisposable资源(例如对象上下文)会不会引起问题?

    public static void AMethod() 
    {
        ObjectContext context = new ObjectContext();

        // do somit
    }

它会导致问题,我的意思是,它是否会在方法体结束后保留​​幕后的对象上下文,因为它是一个静态方法?

可以看出,类不是静态的,变量是方法的本地变量。

我知道我应该在这里使用'使用',只是好奇这个特定的事件组合是否会/会导致内存泄漏。

2 个答案:

答案 0 :(得分:3)

为避免出现任何问题,建议您在完成使用后立即处理IDisposable资源。这可以通过将它们包装在using语句中来实现:

public static void AMethod() 
{
    using (ObjectContext context = new ObjectContext())
    {
        // do something
    }
}

答案 1 :(得分:1)

离开方法AMethod的范围后,您的context对象不能再使用,因此最终会被垃圾收集。

但是当它实现IDisposable时,你应该使用using语句:

using (ObjectContext context = new ...)
{
    // Use the context here
}