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

标签 .net nhibernate subsonic orm castle-activerecord

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

经过一些实验,我将我的要求细化为以下内容:

  • 能够从数据库架构生成可用的类(SQL Server 支持就足够了),
  • 支持 ActiveRecord 模式,
  • 以编程方式可配置(通过代码或属性,无 HBM 文件),
  • 自由。

  • 你能推荐一个吗?

    到目前为止,我已经尝试过:

    亚音速 3.0

    我目前最喜欢的一个,因为它在功能性和简单性之间取得了很好的平衡。

    我不喜欢的地方:
  • 对一对多关系的两端使用 IQueryable<> 和复数名称 - 这对我来说似乎相当违反直觉;
  • 为所有类生成一个文件——比如每个类有一千行,我对代码文件这么大有一种不好的感觉;
  • T4 处理是自动调用的,因此具有最新架构的数据库必须始终可用。

  • CaSTLe ActiveRecord

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

    Darkside GeneratorStudio 生成更好的代码——正确的定义,每个实体一个文件——尽管它使用了像 RefclassIdRefclass 这样的神秘名称。与独立应用相比,我个人更喜欢 Studio 插件,但这当然是一个小问题。

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

    流畅的 NHibernate

    广泛推荐,但我找不到它的代码生成器。

    我错过了什么重要的事情吗?

    最佳答案

    NHibernate 不遵循事件记录模式,它遵循存储库模式。
    FluentNHibernate 的目标是不再需要维护映射文件、代码生成等。它支持 Fluently 定义的 C# 等效的 NHibernate HBM 文件,这非常好,比 XML 更易于维护,但它的强大方面是它的自动映射功能。如果您的数据库设计有严格定义的约定,则 FNH 可以配置为它将生成所有域对象正确映射到您的数据库结构。
    如果您对设计数据库更感兴趣并决定您的域模型(这会让我觉得很脏),这里有一个专门针对 NHibernate Generators 的问题。
    回复您的评论: NHibernate 本身不会改变数据库本身,但是包含一个名为 SchemaExport 的实用程序类,它提供了一个名为 Create 的工厂方法。您可以使用它来生成创建数据库所需的 SQL 语句,就像 NHibernate 看到您的关系结构一样。并且可以选择直接针对数据库运行或写入控制台。
    此实用程序对于将域向前生成到数据库非常有用,目前我正在为所有新应用程序开发编写数据库。我仍在努力找出维护数据库版本的最佳方法。最坏的情况是只是 SC sql 输出,并且需要对更改架构的每一行进行注释,以使其具有特定的更新/删除语句来实现结果。这将使按版本向前/向后滚动或仅执行整个脚本以从头开始制作数据库变得容易。
    如果您纯粹进行反向映射,则应该有可用的工具来生成您的数据库需要映射到等效类的相应 HBM(即,如果您最初在域模型中编写了这些类,它将导出您当前的匹配模式数据库)

    关于具有类自动生成 : Subsonic, CaSTLe AR 的 .NET ORM 解决方案,...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042967/

    相关文章:

    c# - 为什么这个加密的消息损坏了?

    C# MEF 与静态类的用法

    nhibernate - HQL 左连接,其中 left 为空

    c# - 组合多个 SubSonic.Where 过滤器

    .net - DialogResult 关闭设置对通过 ShowDialog() 显示的表单有影响吗?

    .net - 如何使用鼠标光标在屏幕上最大化 WPF 窗口?

    c# - 在 NHibernate 中使用冗长的类映射

    c# - Nhibernate HQL SQL Server 2005/2008 包含稳定

    c# - 如何查看 SubSonic SimpleRepository 生成的 SQL?

    subsonic - 在 SubSonic 3 中插入​​新的录音模式