【问题标题】:Using NHibernate with Codesmith to generate ORM使用 NHibernate 和 Codesmith 生成 ORM
【发布时间】:2009-03-25 01:30:51
【问题描述】:

刚开始学习 NIBerate。为每个数据库表编写适当的 hbm.xml 配置文件似乎相当乏味。

问题是 NHibernate 可以读入表并自动检索关系和所需的配置文件以及数据库映射器类吗?看来程序员一开始还是要做很多基础工作。然后我遇到了 Codesmith,它有 NIBerate 的模板?它填补了空白吗?

【问题讨论】:

    标签: nhibernate codesmith


    【解决方案1】:

    您可以使用代码模板,但恕我直言,这仍然会造成痛苦。最好的方法是使用Fluent nHibernate。他们有一个新的自动映射器功能,按惯例使用配置。没有映射文件,它只是假设您使用相似的名称,并且可以定义如何将实体名称转换为表名称的规则。

    【讨论】:

      【解决方案2】:

      代码生成可以很好地填补这个空白,我开始使用 CodeSmith,但后来他们把它变成了付费项目,所以我搬到了 MyGeneration。我的方法是首先攻击数据库,生成映射文件的代码,如果它们尚不存在,则生成类。这让事情进展得非常快,非常适合原型和创建测试数据。

      映射文件、类和数据库通常是手动更改的。在某些情况下,我尝试让代码生成作为 CI 的一部分工作——但事实证明,这样做很难,除非你对自己的部分进行了严格的规范,否则你是手工制作的代码更改。部分类是一个帮助,但仍然有可能让整个团队在同一个页面上,没有人喜欢让他们的代码被工具覆盖,即使你可以回滚和合并。

      【讨论】:

      • 我参与的上一个项目中使用的代码生成器在我们无法保持足够快的速度更新生成器时关闭了代码基因......
      • 在您看来,除了免费之外,MyGeneration 是更好的代码生成器吗?
      • 对 CodeSmith 或其他人没有足够的经验,我觉得它很古怪但很好。它现在是开源的,并且模板是用 C# 编写的——所有这些都是优点。
      • 它们都生成代码,但 CodeSmith 更容易学习和清洁,但 MyGeneration 也能完成工作,只需要一些时间来学习界面和多个窗口。
      【解决方案3】:

      我为 CodeSmith 工作...请记住,MyGeneration 并没有永远更新,这意味着它也缺乏支持。 CodeSmith 完全支持其产品和模板。这意味着任何模板错误也将由 Codesmith 修复和验证。

      谢谢

      -布莱克·涅米斯基

      【讨论】:

      • 虽然我同意 MyGeneration 已经很久没有更新了,但为了全面披露,值得注意的是您是 CodeSmith 的活跃开发者。
      • 是的,这是真的。我已经更新了我的大部分帖子以表明这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多