EF5不会生成MySQL的枚举字段

时间:2013-07-14 20:48:12

标签: mysql ef-code-first entity-framework-5 .net-4.5

我首先与MySQL 5一起使用Entity Framework 5代码。在我的一个模型中,我使用的是枚举:

public class CoolModel
{
    public int Id { get; set; }
    public Coolnesses Coolness;
}

public enum Coolnesses { SomewhatCool, KindaCool, Cool, VeryCool }

public class EFEnumTestContext : DbContext
{
    public DbSet<CoolModel> CoolStuff { get; set; }

    public EFEnumTestContext()
    {
        this.Configuration.ProxyCreationEnabled = false;
    }
}

但是当使用这个模型时,会发生一些奇怪的事情。我只是尝试将一些项添加到数据库中,然后检索它们:

class Program
{
    static void Main(string[] args)
    {
        using (var context = new EFEnumTestContext())
        {
            context.CoolStuff.Add(new CoolModel() { Coolness = Coolnesses.Cool });
            context.CoolStuff.Add(new CoolModel() { Coolness = Coolnesses.SomewhatCool });
            context.CoolStuff.Add(new CoolModel() { Coolness = Coolnesses.KindaCool });
            context.CoolStuff.Add(new CoolModel() { Coolness = Coolnesses.VeryCool });
            context.SaveChanges();

            foreach (var coolThing in context.CoolStuff)
            {
                Console.WriteLine(coolThing.Id.ToString() + ": " + coolThing.Coolness);
            }
        }
    }
}

但是在执行我的程序时,我注意到我的数据库不包含枚举列。乍一看,我的程序确实有效,但只是因为在第一个Console.WriteLine()期间,它仍然会从内存中打印出来。

经过几次搜索后我发现more people have run into this behavior,但所有迹象都表明它是.NET4与.NET4.5的问题。我刚刚开始创建一个控制台应用程序,从.NET4.5开始作为目标平台,将EF5新添加到项目中并发生相同的行为。我开始认为它可能是Entity Framework的MySQL提供程序,它不支持枚举的生成。这可能是它还是我在某个地方遗忘了什么?

提前致谢。

更新

我刚刚尝试使用SQL Server,但结果是一样的:表中没有枚举字段的列。那可能不是MySQL的提供者,但是我错过了什么呢?

1 个答案:

答案 0 :(得分:0)

找到它。像往常一样,这是愚蠢的事情。

在我的CoolModel上,我将Coolness声明为字段,而不是属性。只需将{ get; set; }添加到修复它的代码行。

public class CoolModel
{
    public int Id { get; set; }
    public Coolnesses Coolness { get; set; }
}