Мы используем EF CF некоторое время в нашем решении. Большие поклонники! До этого момента мы использовали хак для поддержки перечислений (создание дополнительного поля в модели, игнорирование отображения enum durring и сопоставление дополнительного поля с столбцом в db, который мы бы использовали). Традиционно мы сохраняем наши перечисления как строки (varchars) в БД (делает его приятным и читаемым). Теперь с поддержкой перечисления в EF 5 (бета-версия 2) похоже, что он поддерживает только преобразования перечислений в столбцы int в БД.... Можем ли мы получить EF 5 для хранения наших перечислений в качестве их строкового представления.
Где "Тип" - это перечисление типа DocumentType
public enum DocumentType
{
POInvoice,
NonPOInvoice,
Any
}
Я попытался отобразить его, используя:
public class WorkflowMap : EntityTypeConfiguration<Model.Workflow.Workflow>
{
public WorkflowMap()
{
ToTable("Workflow", "Workflow");
...
Property(wf => wf.Type).HasColumnType("varchar");
}
}
Я думал, что это будет волшебная пуля, но..
Это просто бросает:
Указанная схема недействительна. Ошибки: (571,12): ошибка 2019: участник Указанное отображение недействительно. Тип 'Dodson.Data.DataAccess.EFRepositories.DocumentType [Nullable = False, DefaultValue =]' члена "Тип" в типе "Dodson.Data.DataAccess.EFRepositories.Workflow" несовместим с 'SqlServer.varchar [Nullable = False, DefaultValue =, MaxLength = 8000, Unicode = False, FixedLength = False] члена "Тип" в типе "CodeFirstDatabaseSchema.Workflow".
Ваши мысли?