由于所有的依赖关系,NHibernate 并不是真正适合我们的环境。(城堡、log4net 等)

有没有好的轻量级替代方案?

对基于简单文件的数据库(例如 Access/SQLite/VistaDB)的支持至关重要。

理想情况下,某些内容包含在仅引用 .NET 程序集的单个程序集中。如果它只需要 .NET Framework 2.0 或 3.0,那就是额外的好处。

有帮助吗?

解决方案

一般来说,为了让您的数据库后端能够与 .net 一起使用,您需要一个 ADO.Net 提供程序。

对于 MS Access (Jet),提供程序随 .net 一起提供。对于 SQLite,有一个独立的 ADO.Net Provider。

至于数据访问层库,如果您想要对 ADO.Net 进行一些抽象:

从框架 2.0 及更高版本开始,所有这些都运行良好。

基本上, 选择(有很多选择)

其他提示

大量的 - https://github.com/robconery/massive

或者

佩塔波科 - https://github.com/toptensoftware/petapoco

两者都是一个 .cs 文件,除了 GAC 中的内容之外没有任何依赖项。

(完全公开,PetaPoco 是我写的)

对于性能良好且只需要单个组件的轻量级 ORM 为什么不尝试一下 光速 来自思维景观。它不是开源的,但是源代码是可用的并且价格合理——大多数 ORM 没有得到很好采用的风险当然是质量和支持水平,并且在 .目前的净空间。

由于您不喜欢 NHibernate 的依赖项,听起来您不需要日志记录框架或任何城堡项目方面,即国际奥委会、单轨铁路等您是否考虑过可能只采用最低限度的 NHibernate 要求(我相信 log4net 和 Iesi 集合,以及来自 castle 项目的动态代理?)并在它们上运行 ILMerge 以将它们合并到单个程序集中 - 可能需要一些摆弄,但这并不太难 - 或者您可以将每个项目的源代码提取到您为您的组织维护的 NHibernate 自定义构建中,从而删除您的项目/组织不需要的功能 - 它并不那么困难/尴尬听起来,我已经为一个项目做了一些类似的事情,我们希望从 ORM 中受益,但需要减少分布式文件/安装程序的大小。

另外 - 您是否能够解释一下您对基于 Nhibernate 的解决方案的感觉过于“沉重”......根据我的经验,与某些框架相比,它是一个相当轻量级的 ORM 框架。

添加到此列表中,您还可以查看 衣冠楚楚 (为 StackOverflow 本身编写并使用)。

一些替代方案:
- 活动记录 - 它在后台使用nhibernate.dll,但配置是通过属性完成的。这就像 nhibernate 的精简版
- 亚音速
- 酷存.NET - 我在小项目中经常使用它。与数据库数量配合良好

这是一个 大名单 我推荐的替代方案:

  • 酷存
  • 苏达
  • ODX
  • Lightspeed(8 个或以下免费)

这4个是最轻的。Subsonic、ActiveRecord 等针对大型系统。它们在较小的系统上工作得很好,但(至少对于 ActiveRecord 来说)带有大量的依赖项,并且对于小型系统来说是过度杀伤力。我会选择 Lightspeed 并说任何低于 8 个对象的系统都是一个小系统,并且简单地使用 NHibernate 因为它被广泛采用对于扩展来说是有好处的,但在短期内没有意义 - 在 ORM 和你的消费者之间有一个层可以工作无论如何。

如果您正确使用 LINQ to SQL,它可能是“heave”ORM 系统的良好替代方案。

如果您不需要功能齐全的 ORM,只需要 ADO.NET 上的快速数据库独立数据层,请尝试开源 NI.数据库(V2). 。它非常轻量级(只是一个小程序集,没有其他依赖项),提供所有标准数据层基础设施:

  • 查询抽象和解析器的字符串表示形式称为“relex”(它看起来像:“books( rating=5)[title,id]” - Linq-to-SQL 的非常好的替代方案,并且可以即时组合表达式)
  • 用于封装复杂的依赖于数据库语法的 SQL 查询的“视图”概念
  • 数据触发器
  • 选择/更新/删除查询的数据层权限
  • 开箱即可支持 MS SQL、SQLite、MySQL、Odbc/OleDb 提供程序 (MS Access)。可以轻松添加对其他 SQL 数据库的支持。

其主要组件(DALC)仅用一行代码初始化:

var dalc = new DbDalc(new SqlClientDalcFactory(), connectionStr);

就这样。如果您需要 .NET 2.0 运行时支持,您可以尝试在 2.0 运行时下编译最新的 V2 版本或使用以前的旧版本(NI.Data.Dalc、V1)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top