我首先将 Entity Framework 5 代码与 MySQL 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()
它仍然从内存中打印出来。
经过几次搜索后,我发现更多人遇到了这种行为,但所有迹象都表明这是 .NET4 与 .NET4.5 的问题。我刚刚从 .NET4.5 作为目标平台开始创建了一个控制台应用程序,将 EF5 新添加到项目中,并且发生了相同的行为。我开始认为它可能是不支持枚举生成的实体框架的 MySQL 提供程序。可能是这样,还是我在某个地方忘记了什么?
提前致谢。
更新
我刚才试着让它与 SQL Server 一起工作,但结果是一样的:表中没有枚举字段的列。那么它可能不是 MySQL 提供程序,但是我错过了什么?