2013-08-28 19 views
5

Tôi có một phương pháp khuyến nông được sử dụng bởi một số bảng:Tôi có thể sử dụng một phương pháp mở rộng để thêm cột VÀ ràng buộc khoá ngoại với Trình chuyển đổi thông thạo không?

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

Dưới đây là một bảng ví dụ sử dụng nó:

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

sau đó tôi phải thêm một chìa khóa nước ngoài bằng tay mỗi lần như vậy:

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

Có cách nào để đóng gói khai báo chìa khóa nước ngoài theo phương pháp mở rộng WithUser() để tôi (và quan trọng hơn, những người khác trong nhóm của tôi) không phải chỉ định nó mỗi lần?

+0

Có ai có ý tưởng không? – Jared

Trả lời

10

Điều này đã trở nên dễ dàng hơn mong đợi. Đây là mã để thực hiện điều này:

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

Tôi chỉ muốn tài liệu này được tài liệu tốt hơn ở đâu đó.

+0

Hãy thêm điều này vào trang FluentMigrator wiki. Nó mở cửa cho tất cả mọi người. –