带有类自动生成的.NET ORM解决方案:Subsonic,Castle AR,......?

Vla*_*adV 7 .net subsonic nhibernate orm castle-activerecord

我曾经使用自定义数据映射库,并且我正在尝试切换到更广泛的ORM解决方案.

经过一些实验,我将我的要求提炼到以下几点:

  • 能够从数据库模式生成可用的类(SQL Server支持就足够了),
  • 支持ActiveRecord模式,
  • programmaticaly可配置(通过代码或属性,没有HBM文件),
  • 自由.

你能推荐一个吗?


到目前为止,我尝试过:

亚音速3.0

我最喜欢的那个,因为它感觉就像功能和简单之间的良好平衡.

我不喜欢的:

  • 使用IQueryable <>和复数名称用于一对多关系的两端 - 这对我来说似乎是违反直觉的;
  • 为所有类生成一个文件 - 就像每个类一千行一样,我对代码文件那么大感觉不好;
  • T4处理是自动调用的,因此具有最新模式的数据库必须始终可用.

城堡ActiveRecord

带有ActiveWriter加载项的CastleAR几乎就是我所需要的,但是ActiveWriter的代码并不完美(似乎不支持Nullable <>属性,默认的一对多实现不起作用)我找不到如何手动修复此代码.

Darkside GeneratorStudio产生更好的代码 - 正确的定义,每个实体一个文件 - 尽管它使用神秘的名称,如RefclassIdRefclass.我个人喜欢Studio addin而不是独立应用,但这肯定是一个小问题.

CastleAR发行版中捆绑了大约20个文件; 虽然本身不​​是问题,但感觉就像超重.我不需要太多关于NHibernate和其他东西的深奥知识吗?

流利的NHibernate

广泛推荐,但我无法找到它的代码生成器.

我错过了重要的事吗?

Ada*_*per 1

关于您不喜欢 SubSonic 的几点想法:

  • 对一对多关系的两端使用 IQueryable<> 和复数名称 - 这对我来说似乎相当违反直觉;

确实,我同意这是非常违反直觉的,而且我从来没有弄清楚为什么会这样,但是您可以很容易地修改模板来解决这个问题。

  • 为所有类生成一个文件 - 就像每个类一千行一样,我对代码文件这么大有一种不好的感觉;

你可能会认为这可能会导致问题,但我还没有遇到过任何问题,也没有在 stackoverflow 上看到过相关报道。

  • T4 处理是自动调用的,因此具有最新模式的数据库必须始终可用。

仅当您编辑 t4 文件时它才会自动调用,因此实际上您只需要在更改模板时可用的最新架构。