函数之间的共享上下文(实体)

时间:2015-07-17 10:25:49

标签: c# asp.net .net entity-framework entity-framework-5

有一次我不在这里,因为我有问题,但有关实体的问题

我有一个名为db的类,可以进行所有实体调用。 因为我很懒,所有的功能都是静态的。 一个函数的进程可能导致此类中的其他函数调用... 每次创建一个新对象MyDBEntities,可能没有通过saveChanges()

的修改

在所有功能之间“共享”上下文是一个好主意吗? 让我解释一下:我读过this question并且我不想做这样的事情,但更像是:

private static MyDBEntities context(MyDBEntities c)
{
    if (c == null)
        c = new MyDBEntities();
    return c;
}

和每个函数一样

public static randomfunction(object parameter1,MyDBEntities ctx = null )
{
    ctx=context(ctx);
    /*things*/
    randomfunction2(blablah,ctx);
    /*awesome stuff*/
}

这可能是个好主意吗?

1 个答案:

答案 0 :(得分:0)

没有。不要偷懒。将DbContext视为工作单元 - 在需要时创建它并在之后处理它。重用一个实例时 - 它可能会占用你的记忆,因为它会追踪比你想要的更多的实体。如果其中一个方法使上下文变脏,您还可能无意中保存您不想保存的更改。