如何使用一个连接显式加载多个DbSet?

时间:2018-06-15 07:55:40

标签: c# entity-framework entity-framework-6

我刚刚开始使用EF6。我想知道是否有可能使用一个连接明确加载一个DataContext的DbSet?

比如说我有一个DbContext:

public class MyContext : DbContext
{
    public MyContext(string connectionString) : base(connectionString)
    {

    }
    public DbSet<EntityA> EntityASet { get; set; }
    public DbSet<EntityB> EntityBSet { get; set; }
}

如果我使用代码:

var context = new MyContext("...");

context.EntityASet.Load();
context.EntityBSet.Load();

每次加载调用都会打开和关闭连接,因此会打开和关闭2个连接。

有没有办法使用一个连接显式加载两个DbSets?

1 个答案:

答案 0 :(得分:2)

是的,可以使用Database.Connection属性明确打开连接:

context.Database.Connection.Open();
try
{
    context.EntityASet.Load();
    context.EntityBSet.Load();
    // …
}
finally
{
    context.Database.Connection.Close();
}

另一种方法是打开一个显式事务:

using (context.Database.BeginTransaction())
{
    context.EntityASet.Load();
    context.EntityBSet.Load();
    // …
}