ASP.NET:使用连接池和嵌套事务正确实现嵌套API调用

时间:2010-01-04 11:21:37

标签: c# asp.net nested transactions transactionscope

我需要知道执行以下操作的最佳方法。我有嵌套的业务级API(比如级别1和级别2)。 L1需要拨打L2。两个API都直接在自己的嵌套级别使用数据库层。

现在,在数据库层,我每次都从池中获取数据库连接,如下所示:

    SqlConnection conn = new SqlConnection(connString);
    conn.Open();
  1. 每次在每个数据库级别调用上获取数据库连接是否合适?我知道它将从ASP.NET连接池返回一个连接。

  2. 但是,在整个嵌套调用中(或整个当前的http请求生命周期内)维护相同的数据库连接不是更好吗?

  3. 每次从池中获取连接会导致嵌套的TransactionScopes出现问题吗?

1 个答案:

答案 0 :(得分:0)

回答#1 没关系,但如果你的系统真的很忙,你需要在你的连接字符串中提高max connection参数。理想情况下(至少我这样做的方式是: - 请求响应周期的一个连接。)

2,3取决于您如何实现这两个层,如果您只有一个连接使用两个层,那么事务将是一个问题。我猜这两层并没有真正“连接”,因为你不需要事务来跨这些层工作。如果是这样,那么我会走你的路线。