使用C#,SQL Server设计数据访问层

时间:2012-10-10 11:18:54

标签: c# sql-server dataset data-access-layer n-tier-architecture

好的,正如标题所示,我正在为我目前正在研究的调查框架设计数据访问层。

我们都熟悉分层架构概念,我们尝试以表示层可以挂钩到任何业务层的方式实现层之间的分离,就像业务层可以连接到任何数据访问层一样它的实现只要它保持相同的接口(相同的方法)。

现在,在使用SQL Server构建数据库之后,我使用DataSet(* .xsd)文件构建DAL,并在此文件中为每个表适配器和数据库中相应的存储过程创建方法。

在使用Visual Studio中的数据集可视化设计器工作一段时间后,我注意到我的目标是提供一个非常灵活的API,以方法的形式为用户提供所有可能的查询。例如,我想为用户提供使用任何可能的过滤器或不使用过滤器对表执行检索操作的方法,我还希望用户能够使用他/她想要的任何列作为过滤器来删除行,还要更新使用他想要的任何列作为过滤器的所有/单个字段。

我实现这一目标的方法主要是为每个可能的查询创建一个方法,无论它是DDL还是DML。现在,当我认为我可能在某种方法中犯了错误或者我想检查方法以确保我在快速输入时没有遗漏任何东西时,这看起来很痛苦,因为我最终得到了大量的方法。

所以,我的问题是:是否有另一种设计数据访问层的方法,以便可以轻松地重构方法并创建它们?

我希望我没有详细说明,但我想把你放在画面中,这样我才能得到正确答案,提前谢谢

1 个答案:

答案 0 :(得分:2)

好吧,您可以使用ORM工具提供良好的数据访问层。我的意思是因为使用ORM工具,您将支持大多数populars数据库,如SQL Server,Oracle,MySQL,PostgreSql等。

根据您使用的wichi ORM工具,您不必编写SQL语句,这意味着您对查询错误不太敏感。

我建议您查看名为NHibernate的工具。使用此ORM,您可以使用Linq和另一个(更具体的NHibernate)名为QueryOver来编写查询。你将有很多灵活的东西来编写动态查询。 使用ORM工具,您可以实现Repository Pattern并创建方法和查询以获得工作数据访问。

因此,当您使用类似这样的内容时,您将获得Visual Studio的好处,例如Refecting,因为LinqQueryOver是强类型的。但是你也会有HQL,就像Sql Statment一样。

查看此文章:Why I don't use DataSets