我们在解决方案中使用 EF CF 已有一段时间了。大粉丝!到目前为止,我们一直在使用 hack 来支持枚举(在模型上创建一个额外的字段;在映射期间忽略枚举;并将额外的字段映射到我们将使用的数据库中的列)。传统上,我们一直将枚举作为字符串(varchars)存储在数据库中(使其美观且可读)。现在有了 EF 5(Beta 2)中的枚举支持,它看起来只支持将枚举映射到数据库中的 int 列......我们可以让 EF 5 将我们的枚举存储为它们的字符串表示形式。
其中“Type”是 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.Workflow”中成员“Type”的类型“Dodson.Data.DataAccess.EFRepositories.DocumentType[Nullable=False,DefaultValue=]”与“SqlServer.varchar[Nullable=”不兼容False,DefaultValue=,MaxLength=8000,Unicode=False,FixedLength=False]' 'CodeFirstDatabaseSchema.Workflow' 类型中的成员 'Type'。
你的意见?