代码之家  ›  专栏  ›  技术社区  ›  user2981411

Dapper如何在不显式打开连接的情况下执行查询?

  •  1
  • user2981411  · 技术社区  · 6 年前

    我们正在为一些数据访问活动使用DAPPER,并使用标准推荐方法连接到数据库,如下所示:

    public static Func<DbConnection> ConnectionFactory = () => new SqlConnection(ConnectionString);
    

    但是,如果我们尝试执行一个语句,在文档中它显示您需要首先声明:

    using (var conn = ConnectionFactory())
    {
       conn.Open();
       var result =  await conn.ExecuteAsync(sql, p, commandType: CommandType.StoredProcedure);
       return result;
    }
    

    这意味着,必须显式地打开连接。但是,如果我们不写声明 conn.open() ,它也起作用,我们担心在这种情况下,连接可能无法正确处理。

    对于如何执行SQL,我将不胜感激。 没有 显式打开任何连接。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Amit Joshi    6 年前

    适配器提供两种处理连接的方法。

    首先是-允许dapper处理它。
    在这里,在将连接发送到dapper之前不需要打开连接。如果输入连接未处于打开状态,dapper将打开它-dapper将执行操作-dapper将关闭连接。

    这将关闭连接。 Open/Close different 比处置。所以,如果您真的想处理连接,最好切换到第二种方式。

    第二个问题是——你自己动手。
    在这里,您应该自己显式地创建、打开、关闭和处理连接。

    有关详细信息,请参阅以下链接:
    https://stackoverflow.com/a/51138718/5779732
    https://stackoverflow.com/a/41054369/5779732
    https://stackoverflow.com/a/40827671/5779732