一般地开发类库和数据库层的最佳实践是什么?

Ahm*_*aid 5 c# class-library

我将开发一个数据库层来公开一组功能,这些功能将提供对数据库的读写.我有一系列与此相关的问题,我希望有人提出建议

  1. 如何处理数据库异常?(即:超时异常)或让dll客户端处理它们

  2. dll不是线程安全的,所以我应该为每个dll实例使用单个连接吗?因为这提高了性能.

  3. 开发类库是否有任何一般规则?

我正在使用C#vs2008和SQL2008

Mar*_*ell 5

1:由你决定; 你不能对它们做任何事情,所以我可能会让它们浮出水面,除非我需要将它隐藏在调用者之外(用类似的,不太具体的例外代替)

2:你应该把联系保持为"本地",尽可能短暂; 通常每个方法调用一个.大多数提供程序都有连接池,这意味着您将返回相同的底层连接(只要您使用相同的连接字符串),而不必强调同步,重入等(它将根据需要分配更多连接)

3:查看存储库模式之类的模式; 另请参阅LINM-to-SQL,Entity Framework,NHibernate等ORM框架.

Customer GetCustomer(int id) {
    using(var conn = CreateConnection()) {
        conn.Open();
        // etc
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是.连接池意味着底层连接将保持打开 - 即不同的SqlConnection实例,但是相同的服务器SPID. (2认同)