2010-03-23 39 views

Trả lời

55

Bạn có thể tạo ra một phương pháp mở rộng để quấn .AsString (Int32.MaxValue) trong vòng .AsMaxString()

ví dụ

internal static class MigratorExtensions 
{ 
    public static ICreateTableColumnOptionOrWithColumnSyntax AsMaxString(this ICreateTableColumnAsTypeSyntax createTableColumnAsTypeSyntax) 
    { 
     return createTableColumnAsTypeSyntax.AsString(int.MaxValue); 
    } 
} 
20

OK, tôi đã tìm thấy. Về cơ bản, sử dụng .AsString (Int32.MaxValue). Đáng tiếc không có một phương pháp .AsMaxString(), nhưng tôi đoán nó dễ dàng, đủ để đưa vào ...

4

Nếu bạn thường tạo cột/bảng có cùng cài đặt hoặc nhóm cột, bạn nên tạo các phương pháp mở rộng cho di chuyển của mình!

Ví dụ, gần như tất cả một trong các bảng của tôi có các cột CreatedAt và UpdatedAt DateTime, vì vậy tôi whipped lên một phương pháp mở rộng ít vì vậy tôi có thể nói:

Create.Table("Foos"). 
    WithColumn("a"). 
    WithTimestamps(); 

tôi nghĩ Tôi tạo ra phương pháp mở rộng đúng cách ... tôi biết nó hoạt động, nhưng FluentMigrator có LOT các giao diện ... ở đây là:

public static class MigrationExtensions { 
    public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) { 
     return root. 
      WithColumn("CreatedAt").AsDateTime().NotNullable(). 
      WithColumn("UpdatedAt").AsDateTime().NotNullable(); 
    } 
} 

Tương tự như vậy, gần như mỗi người trong bàn của tôi có một int khóa chính được gọi là 'Id', vì vậy tôi nghĩ tôi sẽ thêm Table.CreateWithId("Foos") để luôn thêm Id đó cho tôi. Không chắc chắn ... Tôi thực sự chỉ mới bắt đầu sử dụng FluentMigrator ngày hôm nay, nhưng bạn nên luôn luôn được tái cấu trúc khi có thể!

LƯU Ý: Nếu bạn làm làm cho phương pháp helper/mở rộng cho lần di chuyển, bạn nên bao giờbao giờbao giờ thay đổi những gì các phương pháp làm. Nếu bạn làm như vậy, ai đó có thể thử chạy di chuyển của bạn và mọi thứ có thể phát nổ bởi vì các phương thức trợ giúp bạn đã sử dụng để tạo Migration # 1 hoạt động khác so với trước đây.

Đây là đoạn mã để tạo cột trong trường hợp nó giúp bạn tạo các phương pháp helper: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs

15

Bạn có thể sử dụng AsCustom("nvarchar(max)") và đóng gói nó để mở rộng

Các vấn đề liên quan