Sử dụng FluentMigrator, tạo mặc định là Column
sử dụng .AsString()
kết quả trong một nvarchar(255)
. Có cách nào đơn giản (trước khi tôi sửa đổi mã FluentMigrator) để tạo một cột loại nvarchar(MAX)
?Tôi có thể tạo cột nvarchar (MAX) bằng FluentMigrator không?
Trả lời
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);
}
}
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 ...
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
Bạn có thể sử dụng AsCustom("nvarchar(max)")
và đóng gói nó để mở rộng
- 1. Làm thế nào tôi có thể tạo chỉ mục trên nvarchar (max) datatype trong sql?
- 2. thành thạo NHibernate automapping như nvarchar (max)
- 3. Thay đổi cột dữ liệu từ varchar (max) thành nvarchar (max) trong SQL Server 2008
- 4. Máy chủ SQL, Chuyển đổi NTEXT sang NVARCHAR (MAX)
- 5. Tại sao tôi không thể đặt một ràng buộc trên nvarchar (tối đa)?
- 6. FluentMigrator quay trở lại cột Không gọn gàng?
- 7. Tôi có thể chỉ định các loại cột khi tạo chế độ xem SQL Server không?
- 8. Tôi có thể sử dụng chức năng SQL-server nào để lấy ký tự hoặc độ dài byte của cột nvarchar (max)?
- 9. Cách chuyển đổi cột Nvarchar thành INT
- 10. Làm thế nào tôi có thể lưu trữ một chuỗi trong một cột varbinary (max) bằng cách sử dụng C#
- 11. (NOT) NULL cho các cột NVARCHAR
- 12. Việc di chuyển khung thực thể có thể làm gì mà FluentMigrator không thể?
- 13. Tôi có thể tạo cột JTable không có đường viền không?
- 14. Tôi có thể đặt kích thước VARCHAR lớn hơn 8k nhưng nhỏ hơn MAX không?
- 15. Thay đổi loại cột từ ntext thành varbinary (max)
- 16. Tôi có thể tạo Tuples từ IEnumerables bằng LINQ không?
- 17. Tôi có thể tạo thẻ tập lệnh bằng jQuery không?
- 18. Javascript max() cho cột mảng
- 19. Làm thế nào có thể Hibernate ánh xạ dữ liệu SQL loại nvarchar (tối đa)?
- 20. chuyển đổi ngầm từ kiểu dữ liệu nvarchar sang varbinary (max) không được phép
- 21. XML từ cột SQL: Không thể gọi các phương thức trên nvarchar (tối đa)
- 22. Tôi có thể chọn cột css thứ n không?
- 23. SqlServer và nvarchar (tối đa)
- 24. migrator.net vs fluentmigrator vs migsharp
- 25. Có một lý do tại sao tôi không nên sử dụng NVARCHAR trong Sql Server?
- 26. Tôi có thể chọn 0 cột trong SQL Server không?
- 27. MAX() và MAX() TRÊN TÙY CHỌN bằng cách tạo lỗi 3504 trong Truy vấn Teradata
- 28. Tôi có thể tạo nhóm được chọn bằng truy vấn cho một regexp_substr không?
- 29. Ba cột - nhận MAX với SQL
- 30. Tôi có thể sử dụng các cột không tổng hợp với nhóm không?