.net 简单数据访问层

.net 简单数据访问层,.net,orm,data-access-layer,.net,Orm,Data Access Layer,有人能推荐一个简单的数据访问层(C#.NET)吗?不热衷于使用Microsoft应用程序数据访问块,看起来非常臃肿和过度。由于各种原因,我也不想使用LINQ到SQL。出于各种原因,我想在此基础上创建我们自己的内部ORM。在过去,我总是已经构建了数据访问层,因此从未参与构建….您希望能够使用Linq吗 是否要使用数据集/数据表 您想使用代码生成器(您自己的还是其他人的) 是否要使用存储过程 老实说,从零开始开发自己的DAL/ORM并不难,只要您不关心任何类型的高级功能,也不介意这个过程中令人麻木的

有人能推荐一个简单的数据访问层(C#.NET)吗?不热衷于使用Microsoft应用程序数据访问块,看起来非常臃肿和过度。由于各种原因,我也不想使用LINQ到SQL。出于各种原因,我想在此基础上创建我们自己的内部ORM。在过去,我总是已经构建了数据访问层,因此从未参与构建….

您希望能够使用Linq吗

是否要使用数据集/数据表

您想使用代码生成器(您自己的还是其他人的)

是否要使用存储过程

老实说,从零开始开发自己的DAL/ORM并不难,只要您不关心任何类型的高级功能,也不介意这个过程中令人麻木的乏味。不过你得有点疯狂。:)


我假设你也不想使用亚音速、EntityFramework或NHibernate之类的东西,但如果这是一个错误的假设,请纠正我。

其他个人和组织已经花了数月或数年时间开发了自己的ORM和技术,其中许多是你列出的,而且很多都可以免费使用。您应该将资源用于核心应用程序逻辑,而不是尝试构建另一个称为ORM的整体。有足够的产品满足各种应用

你说你从来没有参与过建立你的家庭。出于上述原因,尝试滚动自己生成的ORM(就时间和资源而言,不一定是知识而言)是一个典型的开始错误。如果您认为现有的一些产品似乎有些过火,请等到您进入构建自己产品的复杂过程

然而,如果你想在ORM市场上竞争,而这正是你的产品,那就去吧。那是我的2美分

编辑:如果您担心被绑定到项目中的某个ORM产品或产品,只需将您选择的任何软件隐藏在界面后面,并根据需要交换到其他ORM中即可

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

如果有一天你有一些空闲的周期并且想要构建你自己的ORM,即使在尝试了其他产品之后,你也可以把它放在这个界面后面。

对于非常简单的需求(我的意思是简单!),我会基于存储库模式创建一个DAL,其中sql查询在存储库方法中完成,然后是简单的POCO()创建并返回

如果需要,可以调用存储过程或参数化SQL。然后将数据映射到poco(为此,只需使用标准的SQLDataReader)


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

如果需要避免linq,请查看2.x版。这是一个可以构建的简单/精简ORM。有这么好的代码,为什么还要自己编写呢。

事实上,我发现最简单的SQLHelper文件是2000年早期的MS数据访问应用程序块。解包并打开解决方案后,您会发现只有一个名为SQLHelper.cs的文件,它基本上只包装了许多原始ADO,您将使用自制DAL编写这些原始ADO。它是最佳实践代码(当时是),可以轻松转换为.NET2.0Framework及更高版本。将SQLHelper放入解决方案后,就可以轻松地添加自己的数据访问组件来完成基本的CRUD工作,但不必担心打开连接或数据集之类的低级编码

我知道你在想什么,为什么要提出这个,因为你说你不喜欢这些积木。这是我发现的唯一一个不使用提供者工厂的代码,你说的所有额外代码都是多余的。此块仅适用于SQL Server,请记住这一点。但总的来说,您可能会发现这是项目的一个良好起点

这是一个关于街区本身的例子


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

在你做出决定之前,有一些问题你必须在开始之前回答自己,而不仅仅是如果你不想要linq或ms数据访问层,这些问题包括:

  • 您希望能够修改代码(生成器)还是希望DAL为您提供访问数据库的服务
  • 您想处理XML配置文件还是更喜欢基于反射的DAL
  • 您希望支持多个DBs,还是可以使用一个特定的DBs
几年前,我不得不为我工作的公司建立一个DAL,结果比我想象的要简单,结果是一个基于反射的ORM,它支持许多数据库,现在是SqlServer、Oracle、PostgreSql和SqLite,我可以为您共享代码,它可以帮助您建立自己的或扩展到您的需要

如果它有助于您构建自己的DAL(如果您有时间的话),那么这是一次很棒的学习体验,您将学习一些Sql和该语言的一些功能,您可能永远不会再使用这些功能


祝你好运…

请检查,你可以使用它简化DAL代码,也可以在上面构建自己的ORM。

我前几天发现了这个:

以下是完整的列表:

ADO.NET实体框架,微软的ORM(与.NET 3.5 SP1一起发布)
基础一个基础组件库,免费或商业版 BCSEi ORM代码生成器,免费或商用
.NET业务逻辑工具包,开源
Castle ActiveRecord,ActiveRecord for.NET,开源
DataObjects.Net v4.0,开源,商用
DevForce,商用,N层
开发者快车,快车持久对象(XPO)
实体空间,商业
Euss,开源
哈巴内罗,免费开源
iBATIS,免费开源
Invist、免费ORM和代码生成工具
LLBLGen,打开s