CodeFirstでenumを使いたい最近、いろんなお誘いメールがケータイに舞い込んできて、いやもうマジクリックしちゃうぞコノヤロー。そんなに誘惑するんじゃないよ!なんか迷惑メールが地震以降強烈に増えましたね。結局enumはサポートされないことが決定してしまったCodeFirst。RCからRTMまでの間で機能追加はないので、ここは潔く諦めましょう。enumを使いたいですよね。プロパティをパースするときにenumかenumのジェネリックは完全にスルーされてデータベーステーブルがScaffoldingされます。Typeとしてenumをラップしたクラスを用意し「オレenumじゃないよ、全然関係ないから!」とEFを騙す必要があります。Blogs古のテクニックですね。今もこれしか方法がないみたいです。コンソールアプリを作りながら同じようにやってみよー!VS2010SP1を前提にしますよ?いいですか?だってSQLCE4使ってみたいでしょ。SQLCE4も入ってる前提で行きます。なきゃないで問題ないので、SQLCE4関連の部分は読み替えてください。ソリューション作ったらまずは、NuGet!NuGetで必要なパッケージを入れてしまいましょう。EFCodeFirst.SqlServerCompact↑こうです。WebActivatorは不要なので、参照設定から削除しましょう。WebActivatorについては先日書いたので、気になる人はチェックしてみてね。0.8ベースなので少しいじっちゃいます。いっても、DbDatabaseをDatabaseにするのとWebActivatorの属性を削除。あと、SqlCe用のnamespace(System.Data.Entity.Infrastructure)が変わってるので、そこも変更。するね!ワクワクの強要。最初にモデルクラスをつくって、次にDbContext派生。</system.data></configuration>↑App.config。enumのまま作ってどういう動作になるのかを見てみます。}}↑main.cs。}SQLCEEntityFrameworkのStartメソッドにDbContextのクラスを指定するのも忘れずに。コード長いけどドンマイ。行くぜ!クリックして拡大してみてね。名前の横にロールが表示されました。これはAddするインスタンスに設定したものが、そのまま表示されただけです。次に一度終了して、もう一度実行してみます。すると、今度は"Unknown"と出ました。なんでかというと、なんとテーブルには保存されてないからです!そういう仕様なので驚かないでね。VSから確認してみます。