DAL“类型化数据集”或自定义业务对象

时间:2010-08-30 13:30:37

标签: c# .net asp.net

我想了解您对“DataSet Designer”和DAL(数据访问层)最佳做法的看法。 我使用Visual Studio 2010 Framework .NEt 4.0。

根据我的理解,“DataSet Designer”允许我使用DataTable和Adapter自动创建严格的Typed-DataSet,它直接在Visual Studio 2010中包含DAL。

我想知道: - 如果在实际场景中“DataSet Designer”运行良好,或者更好地编写自定义业务对象。 - 如果存在.net 4.0中引入的其他新解决方案

感谢您的支持! : - )

10 个答案:

答案 0 :(得分:8)

我必须处理类型化数据集,这是一场噩梦。如果您有选择从不使用它们。一切都更好。

答案 1 :(得分:5)

随着.Net 4.0框架的出现和LINQ to SQL的引入,我一直在采用严格编写的业务对象的自定义DAL。我们简要地尝试了实体框架,但最终得出的结论是它与DataSet非常相似,因为自动生成的代码虽然方便,却因为我们最终没有使用的额外垃圾而过于膨胀。

我们发现将LINQ写入DAL并将数据提取到我们的自定义类中,我们能够简化数据访问并在功能上控制数据的使用。这是一个非常方便的过程,但是初级开发人员需要花一点时间来抓住它。

答案 2 :(得分:4)

我建议使用Entity FrameworkORM Nhibernate

数据集对数据库思维方式的影响太大了,我个人在使用它们时遇到了很多问题。它们经常被破坏并抛出难以排除故障的奇怪错误。

您可能会感兴趣的其他一些相关问题

What are the advantages of using an ORM?

ASP.NET DataSet vs Business Objects / ORM

答案 3 :(得分:2)

使用ADO.NET实体框架,这是微软ORM的未来发展方向。或者,考虑一个像NHibernate这样的开源源......

HTH。

答案 4 :(得分:2)

在我的公司,我们现在已经使用Typed DataSet一段时间了,并且已经获得了一般的积极体验。我知道很多人不喜欢DataSet,并且肯定有更新的数据访问工具,但是既然你问过一个真实的场景,这里有一些我的要求和发现:

  • 需要能够读取SQL Server,MS Access和FoxPro数据源
  • SQL Server访问只能通过SPROC调用(不是我的选择)
  • 相对容易学习,特别是对于ASP.NET新手的开发人员

我亲自探索了低级ado.net访问,类型化数据集,linq-to-sql,以及编写自定义数据访问类。我还没有看过实体框架,因为VS2008中包含的版本似乎有一些混合的评论,直到最近我才能访问VS2010(我计划在今年的某个时候审查EF)。

我们选择使用Typed DataSet,因为它们似乎提供了针对SPROCS的更快开发,我们在asp.net网站上找到了Scott Mitchell的非常全面的教程:http://www.asp.net/data-access/tutorials

至于我们迄今为止的经验,它大多是好的。即使对于少量的表(< 20),DataSet设计器也会生成大量代码。在SPROCS中进行更改会引起一些麻烦,但我希望看到一个可以使这更容易的工具。

您可能会尝试更轻松地做出决定:提出一个小型域名问题,例如客户编辑页面或订单输入页面,并使用各种技术多次实施。这需要一些时间,但这是一个很好的学习方法,你可以自己比较技术。我们这样做了,似乎有很多帮助。

答案 5 :(得分:1)

我个人更喜欢自定义业务对象的灵活性,但更多的工作。另请参阅Entity Framework和Linq To Sql。实体Fx在.NET 4.0中具有更大的灵活性。这个article应该让你开始使用Entity Fx。

答案 6 :(得分:1)

如果有什么我认为您应该查看Entity Framework。有are lotsgreat教程可以帮助您入门。

答案 7 :(得分:1)

我个人同意Joel Etherton的条件。

如果你有一个足够小的项目,即使EF的膨胀,你仍然没有看太多的shenanigan代码,我会说它提供的权宜之计是值得的。然而,在更大的代码库中,如果让你的手大量膨胀,可能会变得很多。

EF与老式业务对象的另一个好处是,虽然没有提到,但是通过EF实现,您可以更轻松地升级到更新的.NET版本,利用下一个.NET中的优势而无需重写一堆代码用手。 (这也可能是一把双刃剑,因为使用EF升级到新的.NET可能会影响你的dal的行为,而手写的dal则不太可能受到影响。)

那就是说,我同意Joel Etherton,写下你可以实现LINQ的最简单的最小dal,dal总是太重要了,无论什么时候都可以避免过于复杂。

答案 8 :(得分:1)

如果您不想浪费时间,请不要学习DataSet。研究对象关系映射的一般概念,它们的优缺点。查看Hibernate for Java或Doctrine for PHP等项目。提供数据库对象包装的DataTables和DataSets背后的方法已经结束。您的框架应该指导您设计域模型,而不是数据库模式。

答案 9 :(得分:0)

NHibernate的。特别是如果您使用的是Oracle。

相关问题