NuGetの最新のEntityFramework5を使用しています。間違っているかどうかはわかりませんが、このテンプレートでは複合型が機能しないようです。(???)何をしても、常にこのコンパイル時エラーが発生します。
実行中の変換:System.InvalidCastException:タイプ'System.Data.Metadata.Edm.ComplexType'のオブジェクトをタイプ'System.Data.Metadata.Edm.PrimitiveType'にキャストできません。
例えば:
空のモデル「SimpleModel」を作成し、その中に単純なエンティティ「Foo」と、複合タイプ「Bundle」の「Something」という複合プロパティを追加しました。これはすべてEDMデザイナーを使用して行いました。
SQLEXPRESS DBにモデルを永続化するために、「モデルからデータベースを生成」に進みました。スクリプトを実行すると、すべて問題ありませんでした。新しいエンティティモデルを使用していくつかのものを記述してテストしましたが、正常に機能しました。つまり、SaveChanges()は正常に機能しました。
「コード生成アイテムの追加」に移動し、次のテンプレートを選択しました:EF 5.x DbContext Fluent Generator「SimpleModel.tt」シリーズのテンプレートファイルを作成すると、すぐに上記のエラーが発生しました。
「SimpleModel.Mapping.tt」テンプレートによって生成された「SimpleModel.Mapping.cs」ファイルを見ると、このコードファイルが不完全であることがわかります。これは不完全な唯一のファイルです。つまり、マッピングコードの生成が壊れています。このテンプレートは最新のEF5と互換性がありますか?
ObjectContext
いくつかのテーブルとandに基づくエンティティモデルEntityObjects
(つまり、Model-Firstのもの)を備えた既存のDBがあります。最も重要なことは、これらのテーブルにマップされたエンティティを利用する既存のデータレイヤーがあり、多くのデータが複雑なタイプに適切にバンドルされていることです(IDのないバンドルされた数値とテキストのもの)。
重要なのは、エンティティモデルをusingからObjectContext
andに移行する必要があるということです。次に、Code-Firstに移行します。EntityObjects
DbContext
POCOs
これはどのようにすればよいですか?
どんな助けでも事前に感謝します!