我将开发一个数据库层来公开一组功能,这些功能将提供对数据库的读写。 我有一系列与此相关的问题,我希望有人提出建议
如何处理数据库异常?(即:超时异常)或让dll客户端处理它们
dll不是线程安全的,所以每个dll实例应该使用单个连接吗?因为这可以提高性能。
是否有开发类库的一般规则?
我正在使用C#vs2008和SQL2008
答案 0 :(得分:5)
1:由你决定;你不能真正对它们做任何事情,所以我可能会让它们浮出水面,除非我需要将它隐藏起来(用类似的,不太具体的例外代替它)
2:你应该把联系保持为“本地”并尽可能短暂;通常每个方法调用一个。大多数提供程序都有连接池,这意味着您将获得相同的底层连接(只要您使用相同的连接字符串),而不必强调同步,重新入侵等(它将根据需要分配更多连接)
3:查看存储库模式之类的模式;另请参阅ORM框架,如LINQ-to-SQL,Entity Framework,NHibernate等。
即
Customer GetCustomer(int id) {
using(var conn = CreateConnection()) {
conn.Open();
// etc
}
}
答案 1 :(得分:3)
只有我给你的建议是,以前做过比我更聪明的人,他们已经从陷阱中学到了。或许您可以花时间阅读哪些框架可供您自定义而不是滚动自己的代码?
除此之外,我建议您仔细考虑数据库层的使用者,确保他们不需要知道您的图层内部到底发生了什么。建立一个友好的可重用公共界面,这应该会对您有所帮助。
我还建议您仔细查看Linq to SQL,因为利用这将使您的类库看起来有很多不同,而不是继续使用ADO.net或vanilla ORM。