为了重用开放式连接,我试图遵循答案中所见的模式,例如:
这些示例使用System.Data.EntityClient.EntityConnection
,我无法使用Entity Framework Core找到引用。
using (var conn = new EntityConnection(connectionString))
{
conn.Open();
using (var db = new MyContext(conn))
{
...
db.SaveChanges()
}
}
EF Core中没有EntityConnection
,还是我需要在Entity Framework Core软件包之外引用一个软件包?
答案 0 :(得分:2)
首先,商店连接通常具有连接池,因此实际上并未使用每个新的DbContext打开和关闭连接。
EF Core没有EntityConnection,因为它只支持CodeFirst,其中映射是从Attributes / Fluent API / Conventions生成的。 EntityConnection用于指定EDMX文件的映射。
要使用现有连接打开EF Core DbContext,您可以在DbConnectionOptions中提供连接。要添加接受现有Store Connection的构造函数,可能如下所示:
public class Db : DbContext
{
private readonly SqlConnection con;
public Db() {}
public Db(SqlConnection con)
{
this.con = con;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (con != null)
{
optionsBuilder.UseSqlServer(con);
}
else
{
optionsBuilder.UseSqlServer(@"Server=.;Database=EfCoreTest;Trusted_Connection=True;");
}
}