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

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

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

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

你能推荐一个吗?

到目前为止,我尝试过:

亚音速3.0

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

我不喜欢的:

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

Castle ActiveRecord

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

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

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

流利的NHibernate

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

我错过了重要的事吗?

解决方法

关于你不喜欢SubSonic的一些想法:

>使用IQueryable<>和一对多关系两端的复数名称 – 似乎
对我来说反直觉;

是的,我同意这是非常直观的,我从来没有深究为什么会这样,但你可以很容易地修改模板来解决这个问题.

>为所有类生成一个文件 – 比如每个类一千行,我对代码文件那么大感觉不好;

您认为这可能会导致问题,但我还没有遇到任何问题,而且我还没有看到有关stackoverflow的报告.

>自动调用T4处理,因此必须始终提供具有最新模式的数据库.

只有在编辑t4文件时才会自动调用它,所以当您对模板进行更改时,实际上只需要一个最新的模式.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...