如果它是从ObjectContext创建的,我是否需要处理DbContext?

时间:2015-07-20 18:16:11

标签: c# entity-framework

我为计算相关记录做了一些扩展方法,我不想显式传递DbContext,所以我得到了ObjectContext并从中创建了一个DbContext。

在处理原始DbContext时,新的DbContext是否会被处理?

var original = new CustomDbContext("connectionString")
var entity = original.Table.First()

// in the extension method
var objectContext = entity.GetObjectContext()
var newDbContext = new CustomDbContext(objectContext, false)
// dispose of newDbContext??

// original caller
original.Dispose()

2 个答案:

答案 0 :(得分:1)

经过一些研究,测试和检查DbContext的源代码之后,我得出了不需要的结论。 DbContext只需要处理内部上下文,它是传递的ObjectContext的包装器。

如果丢弃拥有ObjectContext的DbContext,新的DbContext将基本上被处理掉。

答案 1 :(得分:0)

从对象上下文构造新的DbContext。将dbContextOwnsObjectContext设置为' true'在放置DbContext时处理ObjectContext,否则调用者必须处置连接。

通过将其设置为false,将不会释放新的DbContext

修改

将此objectContext与dbContexts

分开
        var objectContext = new ObjectContext("connectionString");
        var newDbContext1 = new CustomDbContext(objectContext, false);
        var newDbContext2 = new CustomDbContext(objectContext, false);

        newDbContext1.Dispose();
        newDbContext2.Dispose();
        objectContext.Dispose();