monoがEntityFrameworkメタデータアーティファクトを埋め込むまで、次の回避策を実装しました
- ステップ1-EntityFrameworkモデルのメタデータアーティファクト処理プロパティを「出力アセンブリに埋め込む」から更新します 「出力ディレクトリにコピー」へ
これにより、メタデータアーティファクトファイルが.edmx(Project1)
を含むプロジェクトのbinフォルダーにコピーされます。-
ステップ2-次のビルド後のイベントを参照プロジェクト(Project2)に追加して、メタデータアーティファクトファイルをそのビンにコピーします。それらを.csprojプロジェクトファイルの最後に追加できます。 Project1を置き換えます プロジェクトの名前で。
<PropertyGroup> <PostBuildEvent Condition=" '$(OS)' != 'Unix' ">copy /Y "$(ProjectDir)..\Project1\bin\Debug\Models\*" "$(ProjectDir)\bin\Debug\" </PostBuildEvent> <PostBuildEvent Condition=" '$(OS)' == 'Unix' ">cp -a "$(ProjectDir)../Project1/bin/Debug/Models/." "$(ProjectDir)bin/Debug/" </PostBuildEvent> </PropertyGroup>
-
ステップ3-接続文字列を更新します
<add name="EntityframeworkTestEntities" connectionString="metadata=res://*/EntityFrameworkTestModel.csdl|res://*/EntityFrameworkTestModel.ssdl|res://*/EntityFrameworkTestModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=EntityframeworkTest;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
に
<add name="EntityframeworkTestEntities" connectionString="metadata=EntityFrameworkTestModel.csdl|EntityFrameworkTestModel.ssdl|EntityFrameworkTestModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=EntityframeworkTest;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />