【问题标题】:What is a good practice for handling SQL connections within a WCF call?在 WCF 调用中处理 SQL 连接的最佳做法是什么?
【发布时间】:2010-06-11 14:29:52
【问题描述】:

假设我想创建一个(无状态)WCF 服务,该服务在端点上公开了三个方法:performSqlOperationA()performSqlOperationB()performSqlOperationC()。每种方法都将数据插入 SQL 数据库。

就像我在办公室看到的那样,每个方法都以初始化 SqlConnection 对象的代码开始。每种方法都以安全处置的代码结尾。

对这些 WCF 方法进行编码以便在每个方法中初始化和处置 SqlConnection 对象而不必在每个方法中执行这些操作的良好做法是什么?我知道我可以在 WCF 方法的类的构造函数中初始化连接,但我不知道如何处理它...调用不能包装在 using 块中。

我熟悉的一个解决方案是 PostSharp,它允许我设置一个属性,使特定代码在每个方法调用的开始和结束时自动运行,但它会更可取仅使用 .net 框架即可。

【问题讨论】:

    标签: .net sql wcf redundancy


    【解决方案1】:

    最佳做法是在每个方法调用中(或在从 WCF 服务操作调用的私有数据访问方法中)使用 using 语句初始化和处置 SqlConnection 对象。

    public void performSqlOperationA()
    {
        ...
        using(SqlConnection connection = ...)
        {
            ...
        }
        ...
    }
    

    你不喜欢这个的什么地方?

    【讨论】:

    • 我不喜欢的一点是我必须在每个方法中都这样做。似乎应该有办法绕过这种冗余。
    • 您可以封装各种位(例如获取连接字符串并创建连接),但没有更好的方法来做到这一点。你也可以使用 ORM,但你仍然有一个等价物。
    • 我给了答案 +1,但似乎 OperationContract 可以通过某种方式建立连接,以及如何处理并发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多