4

タイトルがすべてを物語っています。さまざまな方法でいくつかのブログを見つけました (EF モデルを XML にシリアル化し、IEdmModel に再度逆シリアル化する方法が 1 つでした) が、それらはすべて古いバージョンの OData パッケージに基づいています。

4

2 に答える 2

5

DbContext がデータベース ファーストのアプローチから構築されている場合、指定された回答は失敗し、次のエラーが発生します。

DbModelBuilder の作成、または Database First または Model First を使用して作成された DbContext からの EDMX の書き込みはサポートされていません。EDMX は、既存の DbCompiledModel を使用せずに作成された Code First DbContext からのみ取得できます。

これをしばらくいじった後、適切な解決策を見つけました。基本的に、問題の DbContext を含むアセンブリから CSDL リソースを取得し、Microsoft.Data.Edm.Csdl.CsdlReader.TryParseメソッドを使用して解析します。結果の IEdmModel は有効で、モデルの構築時に EntityFramework によって提供された正確な情報が含まれています。

使用例はこちら

于 2014-01-28T19:31:34.820 に答える
5

シリアル化が唯一の方法です。

私は数ヶ月前にこれについて怒鳴りました。私の知る限り、それ以来何も変わっていません。個人的には、あまり変わるとは思っていません。簡単に言うと、2012 年 9 月の時点で、EF で EdmLib を使用する計画はなく、EF のコードを他のプロジェクトで使用する予定もありません。

OData の EdmLib にどの程度合わせる必要がありますか?

Not worth adopting code
    Cost of implementing SSDL & MSL
    Freedom to evolve our API independently 
Look at aligning names of types and properties where appropriate
于 2013-11-07T16:36:29.997 に答える