Chúng tôi đã sử dụng EF CF một lúc trong giải pháp của chúng tôi. Người hâm mộ lớn! Đến thời điểm này, chúng tôi đã sử dụng một hack để hỗ trợ enums (tạo ra một trường bổ sung trên mô hình; bỏ qua ánh xạ enum durring; và ánh xạ trường bổ sung vào cột trong db mà chúng ta đã sử dụng). Theo truyền thống, chúng tôi đã lưu trữ enums của chúng tôi như chuỗi (varchars) trong DB (làm cho nó tốt đẹp và dễ đọc). Bây giờ với sự hỗ trợ enum trong EF 5 (Beta 2) có vẻ như nó chỉ hỗ trợ ánh xạ enums để int cột trong DB .... Chúng ta có thể nhận được EF 5 để lưu trữ enums của chúng tôi như là đại diện chuỗi của họ.Tôi có thể lưu trữ enums dưới dạng chuỗi trong EF 5 không?
đâu "Loại" là một enum loại DocumentType
public enum DocumentType
{
POInvoice,
NonPOInvoice,
Any
}
tôi đã cố gắng để ánh xạ nó sử dụng:
public class WorkflowMap : EntityTypeConfiguration<Model.Workflow.Workflow>
{
public WorkflowMap()
{
ToTable("Workflow", "Workflow");
...
Property(wf => wf.Type).HasColumnType("varchar");
}
}
tôi nghĩ là sẽ là viên đạn ma thuật nhưng ..
Điều đó chỉ cần ném:
Sch ema được chỉ định không hợp lệ. Lỗi: (571,12): lỗi 2019: Thành viên Ánh xạ được chỉ định không hợp lệ. Loại 'Dodson.Data.DataAccess.EFRepositories.DocumentType [Nullable = False, DefaultValue =]' của thành viên 'Loại' trong loại 'Dodson.Data.DataAccess.EFRepositories.Workflow' là không tương thích với 'SQLServer .varchar [Nullable = False, DefaultValue =, MaxLength = 8000, Unicode = False, FixedLength = False] ' của thành viên' Loại 'trong loại' CodeFirstDatabaseSchema.Workflow '.
Suy nghĩ của bạn?
Đây thực sự là hoạt động nhưng một chút hacky. –
Đó là. Có lẽ EF 7 sẽ có thứ gì đó. – Bryan
Giải pháp tốt.Một chút bình luận, một khi bạn sử dụng một phương pháp mở rộng, bạn có thể viết đơn giản - giá trị.ParseEnum(), thay vì EnumExtensions.ParseEnum (giá trị). –
IFink