代码之家  ›  专栏  ›  技术社区  ›  keithwill

使用NHibernate时,使用哪些常用方法来支持模式更改?

  •  3
  • keithwill  · 技术社区  · 15 年前

    当使用ORM NHiBiNATE时,有什么标准或最佳的开源方法来向具有现有版本的应用程序用户提供模式的更改?

    如果需要添加或删除现有类中的属性,那么如何正确处理使用以前版本的软件的用户的那些更改?

    我不希望每次创建应用程序的新版本时都需要分析ORM更改的结果模式并手动编写版本更新代码。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Alex Burtsev    15 年前

    就像对源代码使用版本控制一样,您应该对数据库架构使用版本控制,特别是当您打算为应用程序提供更新功能时。有一些工具可以帮助您,但我更喜欢使用XML文件和SQL命令手动更新模式修订或降级,如下所示:

     <Revision Id="3">
        <Up>
          <SqlCommand>CREATE TABLE [Category] ( [Id] BigInt Primary Key,    [Name] nvarchar(255) )</SqlCommand>
          <SqlCommand>ALTER TABLE [Group] ADD   CanRead bigint NULL</SqlCommand>
          <SqlCommand>UPDATE [SysValue] SET [Value] = '3' WHERE [Name] = 'Revision'</SqlCommand>
        </Up>
        <Down>
            <SqlCommand>DELETE TABLE [Category]</SqlCommand>
            <SqlCommand>ALTER TABLE [Group] DROP COLUMN [CanRead]</SqlCommand>
            <SqlCommand>UPDATE [SysValue] SET [Value] = '2' WHERE [Name] = 'Revision'</SqlCommand>
        </Down>
      </Revision>
    

    推荐文章