我刚刚开始使用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?
答案 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();
// …
}