流利迁移器(Fluent migrator). 如何添加一个默认值为当前日期的日期时间列?

23

我如何在Fluent Migration中更改包含默认当前日期时间值的列?

所以我需要像这样的东西:

ALTER TABLE database ADD column DATETIME DEFAULT GETDATE() NOT NULL;

只能用于Fluent Migration。谢谢。


短暂的调查后,得出了一个很好的答案:您应该使用扩展方法WithDefault(SystemMethods.CurrentDateTime),其中SystemMethods可以是以下之一:CurrentDateTime、CurrentUTCDateTime、NewGuid、NewSequentialId。 - Seth
2个回答

22

由于答案实际上没有包含任何代码:

Create.Table(nameof(Report))
      .WithColumn(nameof(Report.Id)).AsInt32().NotNullable().PrimaryKey().Identity()
      .WithColumn(nameof(Report.CreatedAt)).AsDateTime().Nullable()
                                           .WithDefault(SystemMethods.CurrentDateTime);

WithDefault(SystemMethods) 方法是解决方案。


这个答案有一个问题。OP还想要一个“非空”列。 - Ruchan
1
切换到 NotNullable() - Chris Marisic

10

你可能已经找到了有关SystemMethods的文档。我刚刚更新了它,以反映FluentMigrator的最新版本。

需要指出的是,这些方法是特定于数据库的,只有Sql Server实现了所有五个SystemMethods。这使得你的迁移变得不太可移植,因为生成的SQL不再是标准的SQL,而且其他数据库不支持某些SystemMethods(例如,在MySql中似乎无法使用CurrentUser)。

如果您认为需要其他方法,请在FluentMigrator的Github网站上记录问题,我们将尝试添加它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接