处理对象哪个更好?

Dan*_*elV -1 c# garbage-collection using dapper

在这种方法的情况下:

public void Delete(int id)
{
    using (var connection = GetOpenConnection())
    {
        connection.Execute($"DELETE FROM MyTable WHERE Id = {id}");
    }
}
Run Code Online (Sandbox Code Playgroud)

要不就:

GetOpenConnection().Execute($"DELETE FROM MyTable WHERE Id = {id}");
Run Code Online (Sandbox Code Playgroud)

我想知道第二个是否是减轻维护和简化的最佳选择.

das*_*ght 8

第一个选项为您提供可预测性:返回的连接对象GetOpenConnection()将在connection.Execute完成后立即处理.

另一方面,如果你使用第二种方法,你可以希望将来某个时候关闭连接,但你绝对不确定何时,即使它会发生.

因此,人们应该更喜欢第一种方法.

注意:请考虑参数化查询.即使在您的情况下插入id查询是非威胁的,因为id类型是int,在您的代码中始终使用参数是一个好主意.