我曾经使用自定义数据映射库,目前我正在尝试切换到更广泛的 ORM 解决方案。
经过一些实验,我将我的要求细化为以下几点:
- 能够从数据库模式生成可用的类(SQL Server 支持就足够了),
- 支持ActiveRecord模式,
- 以编程方式配置(通过代码或属性,无 HBM 文件),
- free.
您能推荐一款吗?
到目前为止我已经尝试过:
亚音速3.0
我目前最喜欢的一个,因为它感觉在功能性和简单性之间取得了很好的平衡。
我不喜欢什么:
- 对一对多关系的两端使用 IQueryable 和复数名称 - 这对我来说似乎相当违反直觉;
- 为所有类生成一个文件 - 就像每个类一千行一样,我对代码文件这么大有一种不好的感觉;
-
T4 processing is invoked automatically, so a database with up-to-date schema must be available all the time.
城堡活动记录
带有 ActiveWriter 插件的 CastleAR 几乎是我所需要的,但是 ActiveWriter 的代码并不完美(似乎不支持 Nullable 属性,并且默认的一对多实现不起作用)并且我找不到如何手动修复此代码。
Darkside GeneratorStudio 生成更好的代码 - 正确的定义,每个实体一个文件 - 尽管它使用像这样的神秘名称引用类 ID 引用类。就我个人而言,我更喜欢 Studio 插件而不是独立应用程序,但这肯定是一个小问题。
CastleAR 发行版中捆绑了大约 20 个文件;虽然本身不是问题,但感觉像是超重了。我不需要太多关于 NHibernate 和其他东西的深奥知识吗?
流畅的NHibernate
广泛推荐,但我无法找到它的代码生成器。
我是不是错过了什么重要的事情?
NHibernate 不遵循活动记录模式,它遵循存储库模式。
FluentNHibernate 的目标是不再需要维护映射文件、代码生成等。它支持 Fluently 定义的 NHibernate HBM 文件的 C# 等效项,这非常好,并且比 XML 更易于维护,但它更强大的方面是它的自动映射功能。如果您的数据库是按照严格定义的约定设计的,则可以配置 FNH,它将生成所有域对象到数据库结构的正确映射。
如果您对设计数据库并让它决定您的域模型更感兴趣(这会让我感觉很肮脏),这里有一个问题专门针对NHibernate 生成器
回复您的评论:NHibernate 本身不会改变数据库本身,但是包含一个名为 SchemaExport 的实用程序类,它提供了一个名为 Create 的工厂方法。您可以使用它来生成 SQL 语句,以 NHibernate 查看关系结构的方式创建数据库。并且可以选择直接针对数据库运行或写入控制台。
该实用程序对于将域向前生成到数据库非常有用,这就是我目前为所有新应用程序开发编写数据库的方式。我仍在努力找出维护数据库版本的最佳方法。最坏的情况只是 SC sql 输出,并且需要对更改架构的每一行进行注释,以使其具有特定的更新/删除语句来实现结果。这将使按版本向前/向后滚动变得容易,或者只需执行整个脚本即可从头开始创建数据库。
如果您纯粹进行反向映射,则应该有工具可用于生成数据库需要映射到等效类的相应 HBM(即,如果您最初在域模型中编写了这些类,它将导出当前的匹配模式)数据库)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)