使用 Fluentmigrator 转换 SQL 表达式以创建索引

Art*_*ino 2 t-sql database sql-server fluent-migrator .net-core

我在 .Net Core 3.1 中有一个使用 SQL Server DB 的应用程序,其中有一个 SQL 表达式,我想将其“转换”为流畅的迁移器表达式,但我不确定如何执行此操作。

CREATE NONCLUSTERED INDEX [nci_wi_XXXXXX] ON [dbo].[MyTable]
([MyColumn1], [MyColumn2]) INCLUDE ([MyColumn3], [MyColumn4], [MyColumn5],
[MyColumn6], [MyColumn7], [MyColumn8], [MyColumn9]) WITH (ONLINE = ON)
Run Code Online (Sandbox Code Playgroud)

我想用与此类似的表达式来表达它:

Create.Index("nci_wi_XXXXXX")
   .OnTable("MyTable")
   .OnColumn("MyColumn1").Unique()
   .OnColumn("MyColumn2").Unique()
   .WithOptions().NonClustered()......
Run Code Online (Sandbox Code Playgroud)

但我不确定在创建索引时如何添加“包含的列”。我怎样才能做到这一点?

提前致谢。

小智 5

听起来这个 PR 已经包含了这个功能:https ://github.com/fluencemigrator/fluencemigrator/pull/409

您可以按照以下方式进行操作:

 Create.Index("nci_wi_XXXXXX")
             .OnTable(nameof(MyTable))
             .OnColumn(nameof(MyTable.MyColumn1)).Ascending()
             .OnColumn(nameof(MyTable.MyColumn2)).Ascending()
             .WithOptions()
             .Include(nameof(MyTable.MyColumn3))
             .Include(nameof(MyTable.MyColumn4))
             .Include(nameof(MyTable.MyColumn5))
             .Include(nameof(MyTable.MyColumn6))
             .Include(nameof(MyTable.MyColumn7))
             .Include(nameof(MyTable.MyColumn8))
             .Include(nameof(MyTable.MyColumn9))
             .Online()
             .NonClustered();
Run Code Online (Sandbox Code Playgroud)