【发布时间】:2012-09-30 20:23:21
【问题描述】:
好的,正如标题所示,我正在为我目前正在研究的调查框架设计一个数据访问层。
我们都熟悉分层架构的概念,我们尝试以一种方式实现层之间的分离,即表示层可以连接到任何业务层,就像业务层可以连接到任何数据访问层一样,无论如何只要它保持相同的接口(相同的方法),它的实现。
现在,在使用 SQL Server 构建数据库之后,我正在使用 DataSet (*.xsd) 文件构建 DAL,并在此文件中为每个表适配器和数据库中的相应存储过程创建方法。
在 Visual Studio 中使用数据集可视化设计器工作了一段时间后,我注意到我的目标是提供一个非常灵活的 API,它以方法的形式为用户提供所有可能的查询。例如,我想为用户提供使用任何可能的过滤器或不使用过滤器对表执行检索操作的方法,我还希望用户能够使用她/他想要作为过滤器的任何列删除行,同时更新使用他想要的任何列作为过滤器的所有/单个字段。
我实现这一点的主要方法是为每个可能的查询创建一个方法,无论它是 DDL 还是 DML。现在,当我认为我可能在某个方法上犯了错误,或者我想检查这些方法以确保在快速打字时没有遗漏任何东西时,这似乎很痛苦,因为我最终得到了很多方法。
所以,我的问题是:是否有另一种方法来设计数据访问层,以便可以轻松地重构方法并创建它们?
我希望我没有详细说明,但我想把你放在图片中,以便我能得到正确的答案,提前谢谢
【问题讨论】:
-
您是否有任何理由不使用 .NET 3+ 并使用 Entity Framework?使用数据访问层时,它使事情变得更加容易。
-
我对 EF 的经验并不丰富,尽管它很简单。 EF 产品会是我在数据库中想到的表吗?如果我从创建类开始,我最终会得到相同的数据库吗?
-
是的,您可以很容易地使用 EF 并使用存储库,链接到您喜欢的任何提供程序。这是现在的一种常见做法,我强烈建议这样做。
标签: c# sql-server dataset data-access-layer n-tier-architecture