繁体   English   中英

简单的数据访问层

[英]Simple Data Access Layer

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

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

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

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

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

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

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

你想能够使用Linq吗?

您想使用DataSet / DataTables吗?

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

你想使用存储过程吗?

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

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

这是一个完整的列表: ORM工具“.Net”

ADO.NET实体框架,微软的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持久对象(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,开源

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

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

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

这是块本身的下载链接

祝你好运,希望这能帮到你。

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

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

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

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

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

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

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

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

祝你好运......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM