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