从列表中处理多个上下文

时间:2014-12-01 12:31:45

标签: c# entity-framework dispose

我有一个存储多个数据库上下文的集合( testRunEntities ),我想将它们一次性处理,然后使用"阻挡方式。

我唯一的想法是在try {} catch {} finally {}中包含此代码并迭代遍历集合。 但是我不想在这个方法中捕获任何异常,因为它应该由调用者完成。

还有其他办法吗?更清洁的方式?

using (TestManagementEntities testManagementEntity = new TestManagementEntities(TestManagementConnectionString))
{
    IEnumerable<TestRunsEntities> testRunEntities = null;

    try
    {
        testRunEntities =
            SomeNamespace.GetReportContextsForPeriod(null, null, testManagementEntity);

        List<string> softwareVersionsResult = await Task.Run(() => DatabaseWrapper.GetSoftwareVersions(
                    selectedProject,
                    testManagementEntity,
                    testRunEntities));
        CB_SoftwareVersion.DataSource = softwareVersionsResult;
    }
    //catch
    //{
    //  throw;
    //}
    finally
    {
        if (testRunEntities != null)
        {
            foreach (TestRunsEntities testRunEntity in testRunEntities)
            {
                testRunEntity.Dispose();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

事实证明,我不需要&#34;扔&#34;调用者处理它的例外,但我可以删除catch {}块。

同时尝试{} finally {object.Dispose();就像在这个场景中使用语句一样,所以我实现了我的目标。