0

NuGetの最新のEntityFramework5を使用しています。間違っているかどうかはわかりませんが、このテンプレートでは複合型が機能しないようです。(???)何をしても、常にこのコンパイル時エラーが発生します。

実行中の変換:System.InvalidCastException:タイプ'System.Data.Metadata.Edm.ComplexType'のオブジェクトをタイプ'System.Data.Metadata.Edm.PrimitiveType'にキャストできません。

例えば:

  1. 空のモデル「SimpleModel」を作成し、その中に単純なエンティティ「Foo」と、複合タイプ「Bundle」の「Something」という複合プロパティを追加しました。これはすべてEDMデザイナーを使用して行いました。

  2. SQLEXPRESS DBにモデルを永続化するために、「モデルからデータベースを生成」に進みました。スクリプトを実行すると、すべて問題ありませんでした。新しいエンティティモデルを使用していくつかのものを記述してテストしましたが、正常に機能しました。つまり、SaveChanges()は正常に機能しました。

  3. 「コード生成アイテムの追加」に移動し、次のテンプレートを選択しました:EF 5.x DbContext Fluent Generator「SimpleModel.tt」シリーズのテンプレートファイルを作成すると、すぐに上記のエラーが発生しました。

「SimpleModel.Mapping.tt」テンプレートによって生成された「SimpleModel.Mapping.cs」ファイルを見ると、このコードファイルが不完全であることがわかります。これは不完全な唯一のファイルです。つまり、マッピングコードの生成が壊れています。このテンプレートは最新のEF5と互換性がありますか?

ObjectContextいくつかのテーブルとandに基づくエンティティモデルEntityObjects(つまり、Model-Firstのもの)を備えた既存のDBがあります。最も重要なことは、これらのテーブルにマップされたエンティティを利用する既存のデータレイヤーがあり、多くのデータが複雑なタイプに適切にバンドルされていることです(IDのないバンドルされた数値とテキストのもの)。

重要なのは、エンティティモデルをusingからObjectContextandに移行する必要があるということです。次に、Code-Firstに移行します。EntityObjectsDbContextPOCOsこれはどのようにすればよいですか?

どんな助けでも事前に感謝します!

4

1 に答える 1

0

どうすればいいですか?

Imhoは、EF Powerツールを使用して(ただし、EF 5はまだサポートしていないと思います)、データベースをリバースエンジニアリングするか、最初に自分でマッピングするコードを記述します。

そのジェネレーターは MS によって提供されていないため、問題がある場合は開発者にバグとして報告する必要があります。Visual Studio ギャラリーでこのジェネレーターの Q/Aを確認すると、複合型はサポートされていないと主張されています。

于 2012-09-13T08:38:43.957 に答える