简单的数据访问层

时间:2009-11-05 15:26:52

标签: .net orm data-access-layer

有人可以建议一个简单的数据访问层(C#.NET)吗?不热衷于使用Microsoft应用程序数据访问块,似乎非常臃肿和矫枉过正。出于各种原因也不想使用LINQ to SQL。我想以此为基础并再次出于各种原因创建我们自己的内部ORM。在过去,我总是已经建立了数据访问层,因此从未参与构建....

9 个答案:

答案 0 :(得分:7)

其他个人和组织花了数月或数年时间开发自己的ORM和技术 - 其中许多是您列出的 - 而且许多都是免费使用的。您应该将资源投入到核心应用程序逻辑中,而不是尝试构建另一个名为ORM的整个野兽。有足够的产品来满足各种应用。

你说你从来没有参与建立你的DAL。由于上述原因,尝试推出自己产生的ORM(就时间和资源而言,不一定是知识)是一个典型的起始错误。如果你认为现有的一些产品看起来有些过分,那就等到你进入构建自己的产品的复杂性。

但是,如果你想在ORM市场上竞争并且那是你的产品,那么就去吧。那是我的2美分。

编辑:如果您担心在项目中绑定某个ORM产品或产品,您可以简单地隐藏您在界面背后选择的任何软件,并根据需要交换其他ORM。 ..

public interface IBusinessDataOperations {
   // hides any ORM of choice
}

如果有一天你有一些自由周期,想要建立自己的ORM,即使在尝试其他产品之后,你也可以将它放在这个界面后面。

答案 1 :(得分:3)

您希望能够使用Linq吗?

您想使用DataSet / DataTables吗?

您想使用代码生成器(您自己或其他人的代码生成器)吗?

您想使用存储过程吗?

老实说,只要你不关心任何类型的高级功能并且你不介意这个过程的麻烦乏味,那么从头开始发展你自己的DAL / ORM并不难。你必须有点疯狂。 :)

我假设你不想使用像SubSonic,EntityFramework或NHibernate这样的东西,但如果这是一个不好的假设,请纠正我。

答案 2 :(得分:2)

以下是完整列表:ORM tools ".Net"

  

ADO.NET实体框架,Microsoft的ORM(随.NET 3.5 SP1一起发布)
  Base One基础组件库,免费或商业
  BCSEi ORM代码生成器,免费或商业
  适用于.NET的Business Logic Toolkit,开源
  Castle ActiveRecord,ActiveRecord for .NET,开源
  DataObjects.Net v4.0,开源,商业
  DevForce,商业,N-Tier
  Developer Express,eXpress Persistent Objects(XPO)
  EntitySpaces,商业
  Euss,开源
  Habanero,免费开源
  iBATIS,免费开源
  Invist,免费ORM和代码生成工具
  LLBLGen,开源驱动程序,商业
  LightSpeed,免费或商业
  Neo,开源
  NConstruct,商业
  NHibernate,开源
  Opf3,免费和商业
  ObjectMapper .NET,GPL和商业许可证
  OpenAccess,免费或商业   TierDeveloper,免费的ORM和代码生成工具
  Persistor.NET,免费或商业
  快速对象,免费或商业
  Sooda,开源; BSD许可证
  亚音,开源
  Orasis,免费试用或购买。
  Telerik,表达或购买。
  CSLA.NET,免费。
  ECO,免费或商业
  nhydrate,开源
  .netTiers,开源
  dapper-dot-net,开源
  codesmithtools plinqo,开源

答案 3 :(得分:1)

如果您需要避免使用linq,请查看SubSonic版本2.x.这是一个可以构建的简单/精简ORM。当有像这样的优秀代码时,为什么要自己动手。

答案 4 :(得分:1)

实际上,我发现的最简单的SQLHelper文件是2000年代早期的MS数据访问应用程序块。解压缩并打开解决方案之后,您会发现您只有一个名为SQLHelper.cs的文件,它基本上只包含了您将使用本地DAL编写的大量原始ADO。这是最佳实践代码(当时是)并且很容易转换为.net 2.0框架及以上。将SQLHelper放入解决方案后,您可以轻松添加自己的数据访问组件来完成基本的CRUD工作,但您不必担心打开连接或数据集的低级编码等等。 / p>

我知道你在想什么,为什么要这样说,因为你说你不喜欢这些街区。那么这个是我发现的唯一一个没有使用提供商工厂的人,而你所说的所有额外代码都是矫枉过正的。此块仅适用于SQL Server,因此请记住这一点。但总的来说,您可能会发现这是您项目中的一个很好的起点。

这是块本身的download link

祝你好运,希望这会有所帮助。

答案 5 :(得分:1)

查看DbExtensions,您可以使用它来简化DAL代码,或者您可以在顶部构建自己的ORM。

答案 6 :(得分:0)

对于非常简单的要求(我的意思很简单!)我将基于存储库模式创建一个DAL,其中sql查询在存储库方法中完成,然后创建简单的POCO(Plain old CLR objects)并且返回。

如果需要,您可以调用sprocs或参数化SQL。然后将数据映射到您的poco(这只是使用标准的SQLDataReader)

但说实话,当查询变得庞大或复杂,或者对象中有很多字段时,最好让正确的DAL / ORM承担压力并专注于您的应用程序。

答案 7 :(得分:0)

在你做出决定之前,你有一些问题需要在开始之前回答自己,而不仅仅是你不想要linq或ms数据访问层那些是那些问题:

  • 您是否希望能够修改代码(生成器),或者您是否希望DAL能够为您提供访问数据库的服务?
  • 您是要处理XML配置文件还是更喜欢基于反射的DAL?
  • 您是否希望支持多个数据库,或者您可以使用特定数据库?

几年前,我不得不为我工作的公司建立一个DAL,结果是它比我更容易,结果是一个基于反射的ORM,支持许多数据库,此时SqlServer,Oracle,PostgreSql和SqLite,我可以为您分享代码,它可以帮助您建立自己的代码或扩展它以满足您的需求。

如果它可以帮助您构建自己的DAL(如果您有时间),那么它将获得很好的学习经验,您将学习一些Sql以及您可能永远不会再使用的语言的几个功能。

祝你好运...

答案 8 :(得分:0)