我想在dll中编写所有数据关系过程(通过.NET的DataAccess的一般函数),我想重复使用它。该DLL应该具有哪些功能?有些人想使用存储过程,有些则需要使用语句。你们都能建议我吗?请指导我!谢谢大家!
答案 0 :(得分:3)
这是一个非常大的话题,但这是一个开始:
对于简单的CRUD操作,我总结一个简单的方法来做到这一点,假设你已经对数据库有所了解,并且你的数据库已经存在。
1)使用VS IDE附带的数据集设计器。 (还有其他方法可以去)
2)将您想要的表拖放到曲面上。这将创建大量生成的代码,以支持您的CRUD操作。无论您使用的是文本语句还是存储过程,都可以轻松自定义它们。设计者知道如何处理参数和数据类型。您也可以对数据进行采样,以确保语句正确。
3)为您拖放的每个表创建DataTables和Adapters,并为成员提供正确的类型。您可以像这样使用它们:
using (MyDataSet.MyDataTable sigtbl = new MyDataSet.MyDataTable ())
using (MyTableAdapter adtp = new MyTableAdapter())
{
adtp.Fill(sigtbl, TargetTime);
//sigtbl now contains the data from your DB. Use LINQ if you want to subquery or whatever.
adtp.Insert(newSig,NewTime) //Parameters depend on your insert.
}
4)将DB逻辑封装到有用的业务功能中,并从其他项目中引用该项目。尝试将DB内容保留在自己的层中。
无论如何,这是一个非常基本的。当你尝试为自己做这件事时,你一定会遇到一些问题,因此请确保你对ADO.NET的工作原理有一个很好的理解,并回过头来提出更多问题。
其他替代方案,仅提及: 1)如果您不希望为您生成类型化类的开销+复杂性,请使用System.Data。 2)看看LINQtoSQL:LINQtoSQL
答案 1 :(得分:2)
除了之前的建议,您可能需要查看企业库的数据访问块: Microsoft Enterprise Library 5.0 The Data Access Application Block 也到了 ADO.NET Entity Framework
答案 2 :(得分:1)
我会远离DataTables,Adapters,Sets等等。我总觉得他们很笨重。我更喜欢编写存储库类,服务层等。我建议你阅读一下领域驱动设计(http://dddcommunity.org)。
答案 3 :(得分:1)
Microsoft Enterprise Library,使用数据访问应用程序块应该可以满足您的需求。它本身就是一个框架。
另一个有趣的数据访问库是众所周知的ORM NHibernate。
如果你想加速你的DAL开发,你应该单独考虑这两个或一起使用。
EntLib DAAB允许您将命名的connectionString提供到应用程序配置文件中,这样您就不需要在connectionString更改时部署应用程序的新版本,只需要部署配置文件。通常的做法是每个配置文件只管理和配置一个connectionString,因此如果只有一个连接字符串发生更改,则只为此连接部署此新配置文件,您就完成了! EntLib允许您根据最佳实践管理连接池。所有这一切都通过非常简单的XML配置文件。
对于NHibernate,它是一个对象/关系映射工具,可以通过ISession API为您处理数据访问。您需要专注的是开发业务类图。完成后,只需根据对象模型编写XML映射文件,然后就可以将对象保存到底层数据存储区中,无论您使用何种数据存储区。使用SchemaExportTool时,您甚至可能不打算编写DDL脚本,因为NHibernate可以为您创建关系模式!
正如我所说,无论是其中之一还是两者,这些都是自己的DAL层,还有更多!除非您想为DAL构建用户友好的工具,否则不要费心将它们包装到另一个类库中。它们是100%可重复使用的!不是很好吗?