2013-08-28 15 views
5

Mam metodę rozszerzenia, które jest używane przez kilku tabelach:Czy mogę użyć metody rozszerzającej, aby dodać kolumnę I ograniczenie klucza obcego z Fluent Migrator?

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

Oto przykład tabeli używając go:

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

I wtedy trzeba ręcznie dodać klucz obcy za każdym razem tak:

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

Czy istnieje sposób na spakowanie deklaracji klucza zagranicznego w metodzie rozszerzenia WithUser(), aby I (i co ważniejsze, inne osoby w moim zespole) nie musieli podawać go za każdym razem?

+0

Ktoś ma pomysł? – Jared

Odpowiedz

10

To okazało się łatwiejsze niż się spodziewałem. Oto kod, aby to zrobić:

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

Żałuję tylko to było lepiej udokumentowane gdzieś.

+0

Możesz dodać to do wiki FluentMigrator. Jest otwarty dla wszystkich. –

Powiązane problemy