小编Joe*_*ear的帖子

我可以将枚举存储为EF 5中的字符串吗?

我们在解决方案中使用EF CF已有一段时间了.大粉丝!到目前为止,我们一直在使用hack来支持枚举(在模型上创建一个额外的字段;忽略enum durring映射;以及将额外字段映射到我们将使用的db中的列).传统上我们一直将我们的枚举存储为DB中的字符串(varchars)(使其变得美观和可读).现在有了EF 5(Beta 2)中的枚举支持,它看起来只支持将枚举枚举到DB中的int列....我们可以让EF 5将我们的枚举存储为它们的字符串表示.

其中"Type"是DocumentType类型的枚举

public enum DocumentType 
    {
        POInvoice,
        NonPOInvoice,
        Any
    }
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法进行映射:

public class WorkflowMap : EntityTypeConfiguration<Model.Workflow.Workflow>
    {
        public WorkflowMap()
        {
            ToTable("Workflow", "Workflow");
            ...
            Property(wf => wf.Type).HasColumnType("varchar"); 

        }
    }
Run Code Online (Sandbox Code Playgroud)

我以为是魔术子弹但是......

这只是抛出:

指定的架构无效.错误:(571,12):错误2019:指定的成员映射无效.类型'Dodson.Data.DataAccess.EFRepositories.Workflow'中成员'Type'的类型'Dodson.Data.DataAccess.EFRepositories.DocumentType [Nullable = False,DefaultValue =]'与'SqlServer.varchar不兼容[Nullable =在'CodeFirstDatabaseSchema.Workflow'类型中成员'Type'的False,DefaultValue =,MaxLength = 8000,Unicode = False,FixedLength = False]'.

你的意见?

entity-framework entity-framework-5

17
推荐指数
2
解决办法
9297
查看次数