2012-04-12 25 views
6

Tôi đang làm việc với một hệ thống đang sử dụng mã EF đầu tiên và tôi muốn sử dụng một số cột thưa thớt SQL Server trên một bảng. Giải pháp hiện tại của tôi là để thả bảng được tạo ra bởi EF và thêm lại thông qua một kịch bản trong quá trình khởi tạo cơ sở dữ liệu. Đây có phải là cái gì đó có thể được cấu hình với Fluent API trong một lớp kế thừa từ EntityTypeConfiguration hoặc các phương tiện khác không?Làm thế nào để thiết lập cột cơ sở dữ liệu là "thưa thớt" khi sử dụng EF Code First Fluent API?

+0

Tôi không thử nhưng điều gì xảy ra nếu bạn sử dụng '.HasColumnType (" INT SPARSE ")'? –

+1

@LadislavMrnka Tôi đã thử .HasColumnType ("INT SPARSE") và nó đã ném '(182,6): lỗi 0040: Loại int thưa thớt không đủ điều kiện với một không gian tên hoặc bí danh. Chỉ các loại nguyên thủy mới có thể được sử dụng mà không có trình độ chuyên môn.' Cảm ơn bạn đã cho ý tưởng. – cResults

+0

Vâng, điều đó có thể có nghĩa là các cột thưa thớt không được hỗ trợ. –

Trả lời

3

Nếu bạn sử dụng Entity Khung di cư, bạn có thể đưa ra một câu lệnh SQL như thế này trong các phương pháp Up cho sự di cư đó thêm cột thưa thớt:

Sql("alter table TableName alter column ColumnName int sparse"); 

Thậm chí nếu bạn không sử dụng di cư, bất kỳ một -Thời gian thực hiện dbContext.Database.ExecuteSqlCommand với cùng một SQL sẽ hoạt động.

Không có cách nào là tốt đẹp như thể bạn có thể cấu hình rõ ràng loại thông qua EF, nhưng chúng vẫn tốt hơn là giảm và thay thế toàn bộ bảng.