最初に、MySQL 5 と組み合わせて Entity Framework 5 コードを使用しています。モデルの 1 つで、列挙型を使用しています。
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 を追加すると、同じ動作が発生します。列挙型の生成をまだサポートしていないのは、Entity Framework の MySQL プロバイダーである可能性があると考え始めています。これでしょうか、それともどこかで何かを忘れているのでしょうか?
前もって感謝します。
アップデート
今SQL Serverで動作させようとしましたが、結果は同じです。列挙フィールドのテーブルに列がありません。それはおそらくMySQLプロバイダーではありませんが、何が欠けているのでしょうか?