2013-08-28 46 views
5

我有用於由幾個表擴展方法:我可以使用擴展方法向Fluent Migrator添加列和外鍵約束嗎?

public static ICreateTableColumnOptionOrWithColumnSyntax WithUser(this ICreateTableWithColumnSyntax tableWithColumnSyntax) 
{ 
    return tableWithColumnSyntax 
     .WithColumn("UserId") 
      .AsInt32() 
      .Nullable(); 
} 

下面是使用它的示例表:

Create.Table("UserSettings") 
    .WithUser() 
    .WithColumn("SomeValue") 
     .AsString(1) 
     .Nullable(); 

我然後必須手動添加的外鍵每次都這樣:

Create.ForeignKey() 
    .FromTable("UserSettings") 
     .ForeignColumn("UserID") 
    .ToTable("Users") 
     .PrimaryColumn("Id"); 

有沒有辦法將擴展方法WithUser()中的外鍵聲明打包,這樣我的(更重要的是,我的團隊中的其他人)不必每次都指定它?

+0

有人有想法嗎? – Jared

回答

10

這最終比預期的容易。下面是代碼來做到這一點:

public static ICreateTableColumnOptionOrWithColumnSyntax WithUser(this ICreateTableWithColumnSyntax tableWithColumnSyntax) 
{ 
    return tableWithColumnSyntax 
     .WithColumn("UserId") 
      .AsInt32() 
      .Nullable() 
      .ForeignKey("Users", "Id"); 
} 

我只是希望這是更好地記錄某個地方。

+0

隨意將此添加到FluentMigrator wiki。它向所有人開放。 –