是否有我可以用于我正在构建的应用程序的现有数据层?

时间:2010-07-16 14:13:41

标签: c# .net sql-server data-access-layer data-access

我正在编写.NET应用程序,从头开始实现数据层的想法对我来说很蠢。 (数据层我指的是与数据库对话的代码,而不是将数据库访问抽象为域对象的层[有时称为数据访问层,可与数据层互换使用]。)

我想找到一个现有的通用数据层实现,它提供标准的crud功能,错误处理,连接管理 - 工作。我将只与SQL Server交谈。

如果库是C#或VB.NET,那对我来说并不重要,我不在乎它是LINQ还是ADO.NET。只要它有效。

**我想强调一点,我不是在寻找数据访问技术或机制(例如LINQ,ORM工具等),而是寻找现有的库。)

6 个答案:

答案 0 :(得分:5)

如果您只与SQL Server通信,则Linq to SQL是您的最佳选择。起步和运行非常容易。您将同时获得数据层和抽象。您所要做的就是提供Linq to SQL的连接字符串,它将处理剩下的工作。

如果您打算使用NHibernate连接到SQL以外的其他数据库。

NHibernate需要比Linq to SQL更多的工作来启动和运行。 MS在Visual Studio中提供了一个很好的工具,可以让您从SQL数据库中快速读取。

答案 1 :(得分:2)

老实说我和NHibernate一直都是粉丝。使用最新版本的Enterprise Library 5 Data Access Block,他们在动态映射支持中本地添加了它们。我必须强烈考虑不在项目中使用NHibernate,而是使用我的域对象中的正向数据库生成工具来创建我的数据库(甚至可以仅使用NHibernate用于方案导出)或类似CodeSmith并使用EntLib。

答案 2 :(得分:1)

您可以使用easyobjects具有非常小的学习曲线,并且非常易于扩展。 来自他们的网站:

  

EasyObjects.NET是.NET Framework的强大数据访问体系结构。与代码生成结合使用时,您可以在几分钟内从头开始为应用程序创建完整的数据层。

答案 3 :(得分:1)

  

我想找到一个现有的通用数据层实现,它提供标准的crud功能,错误处理,连接管理 - 工作。我将只讨论SQL Server。

可能想查看Subsonic。虽然我个人认为它非常有限,但它肯定不是ORM,而是“查询工具”。它将使CRUD操作变得简单直接,并为数据库中的每个表生成部分POCO类,而不是尝试从数据库映射到域层。

答案 4 :(得分:1)

微软的Entity Framework可能就是你想要的,让你不要写“与数据库对话的代码”。

最好的事情是它已经随Visual Studio一起提供 - 根据您的要求 - 您可以使用大多数开箱即用的功能,或通过T4模板手动将其调整为自定义业务逻辑。

您可以将它用于正向和反向工程,并且是一种微软技术,它可以与SQL服务器等其他MS产品很好地集成。

我在3个月前开始在我当前的工作项目中使用它,该项目由几个窗口和WCF服务组成,用于将第三方数据转换为我们自己的数据库方案。根据我们用它做的经验,我们将在未来的项目中使用EF更多。

答案 5 :(得分:0)

您希望此框架与您的例外有什么关系?如果它无法连接到您的数据库,它应该怎么做 - 崩溃应用程序,显示错误消息(winforms或WPF或ASP)......问题是无止境的。

这些答案中其他地方建议的ORM很可能是你最接近的。期望第三方框架提供所有异常处理是不现实的 - 第三方将如何知道您的应用程序应该如何表现?

直接回答您的问题,要求“现有的通用数据层实现,提供标准的crud功能,错误处理,连接管理 - 工作”很简单:使用ADO.NET 。其他人提供的答案实际上是超越这个功能,但是你的回答表明你认为还有更多的东西 - 为你实现数据层的东西。我的建议是你所寻找的东西可能不存在。