在一个项目中,我们已经使用视觉设计师实施了数据访问层(DAL),该设计师自动生成了许多代码(在我们的情况下:.NET 中的强类型 DataSet 和 DataSetTableAdapter)。

但是,使用源控件,我发现编辑和添加新内容很麻烦。我们已经开始通过手动编写SQL语句来编码新数据访问(在我们的情况下:ado.net sqlcommands等),对我来说似乎更干净,尤其是查看通过源控制中的更改。

但我也担心混合数据访问方法。你有什么建议?坚持使用自动生成方法,在需要更改或其他内容时继续转换为“手动” SQL语句?

编辑:在解决切换数据访问策略的一般问题的启发下,我概括了该问题的提出。

模型数据的处理不是非常面向对象的。我们使用 .NET DataTables 而不是自定义对象。

有帮助吗?

解决方案

如果选择的是转换到手动ADO或继续使用的数据集+表适配器之间,我认为你是与数据集保持的更好。您可以通过使用它得到免费的CRUD,以及创建和维护SQL不给出任何值使用这样的时间更少。

顺便说一句,你那句你的问题,它听起来并不像你要去一个更面向对象的方法要么,这可能是打算从数据集中+表适配器办法离开的理由。

您可能需要做一些研究/原型到OR映射器+纯对象域为好,如果你有日益复杂的业务逻辑来处理。这对RAD的方法不太有效,但。我想看看LINQ的2 SQL(如果你有一个简单的模式/对象结构很高兴与1:对象和表之间的一对一映射)或NHibernate的,如果我是你。实体框架还不够成熟。下个版本会更好,但它仍然是一个潜在的很长时间。

其他提示

是,坚持你所拥有的,并根据需要和方便的重构。我不想跟其他的答案不同意,和混淆的事情,但通过其他数据访问框架,你可能会被交易的另外一个系统的头痛。去与你的基础知识,你是舒服。

要直接“裸” ADO.NET和手工做所有的工作DAL在代码中似乎是一个很大的努力。我肯定会推荐看的OR映射器,如已建议由他人(NHibernate的,亚音速等)。

如果您在SQL Server后端和你在.NET 3.0或更高版本,你也可以考虑LINQ2SQL(其死亡的谣言被极大地夸大)的简单场景(1:1个,从数据库表到您的数据库 - 映射层对象),或实体框架为更高级的方案(大量的表格,大量对象继承的在领域模型,复杂的映射情形)。

EF已经得到了很多坏名声的最近,这只是部分成立,恕我直言,新版本,EF V4(因出与.NET 4.0和VS 2010的某个时候这个或明年)看起来非常有前途。

马克

如果你是完全重写你的DAL那么也许你应该考虑像 Sprint.NET 持久性框架或 NHibernate的

...或者 亚音速罗布·康纳利 :)

至少观看您可以在项目页面中找到的 3 个视频。

在DAL是通常的任何应用程序的最过度设计的一部分。保持简单,建立你现在还是合理需要的预期需要很快。的SqlCommand,SqlDataReader的等仍然相对抽象相比坚果和的实际连接到,读取和写入到数据库螺栓。

这是说,你的代码将是,如果你只使用一个通用的方法更具有可读性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top