实体框架核心无法找到对EntityConnection的引用以进行连接重用

时间:2017-08-17 19:20:09

标签: c# entity-framework .net-core entity-framework-core

为了重用开放式连接,我试图遵循答案中所见的模式,例如:

这些示例使用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软件包之外引用一个软件包?

1 个答案:

答案 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;");
            }

        }