「モデルの更新」ウィザードはNPGSQLとVisual Studio 2013 EntityFrameworkでは機能しません。
-
21-12-2019 - |
質問
現在はVisual Studio 2012、EF 5.0とNPGSQL 2.0.12.0を使用しています。
Visual Studio 2013とNPGSQL 2.0.14.3にアップグレードしたい(現状のEF 5.0で大丈夫)。
現在、スキーマの変更をとり、それらをVSデザイナで表示されているEDMXファイルにフィード化する「更新モデル」ウィザードを使用します。これを行い、NPGSQL.Provider2のDDEXを使用し、「実験的な」Visual Studioインスタンスを起動するという厄介な手順に従ってこれを行います。
しかし、これはVisual Studio 2013(生成されたレジストリエントリを更新した後)では機能しません。また、Machine.configのDBPROVIDERをNPGSQL 2.0.14.3に変更した場合も機能しません。
彼らが仕事にこれを手に入れたかどうか、そしてどのようにしてもらうことができるならば、それは顕著になります。
一時的な代替案として、edmgen.exeを使用してスキーマからedmxファイルの更新を検討しています。これまでのところ、.csdl、.ssdlファイルと.mdlファイルを生成することができましたが、それらのすべてを.edmxファイルにパッケージ化する方法が見つかりません。誰かがこのアプローチを試してみましたか?
解決
EF設計者には、機能することができるDDEXプロバイダが必要です。もともとDDEXプロバイダが実験版のVS2012にのみインストールされていたように見えます。VS2013をインストールすると、DDEXプロバイダー用のレジストリキーがあり、EFデザイナはデータベースを使用できません。
EDMXは、CSDL MSLとSSDLをまとめて接着しています。V3スキーマを使用していると仮定して(この名前空間のNameSpace:xmlns="http://schemas.microsoft.com/ado/2009/11/edm"
)このテンプレート内のファイルの内容を貼り付けるだけです(コメントを追加する必要があるコメントを追加しました):
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<!-- EF Runtime content -->
<edmx:Runtime>
<!-- SSDL content -->
<edmx:StorageModels>
<!-- paste SSDL contents here -->
</edmx:StorageModels>
<!-- CSDL content -->
<edmx:ConceptualModels>
<!-- paste CSDL contents here -->
</edmx:ConceptualModels>
<!-- C-S mapping content -->
<edmx:Mappings>
<!-- paste MSL contents here -->
</edmx:Mappings>
</edmx:Runtime>
<!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
<edmx:Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
<edmx:Connection>
<DesignerInfoPropertySet>
<DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
</DesignerInfoPropertySet>
</edmx:Connection>
<edmx:Options>
<DesignerInfoPropertySet>
<DesignerProperty Name="ValidateOnBuild" Value="true" />
<DesignerProperty Name="EnablePluralization" Value="True" />
<DesignerProperty Name="CodeGenerationStrategy" Value="None" />
</DesignerInfoPropertySet>
</edmx:Options>
<!-- Diagram content (shape and connector positions) -->
<edmx:Diagrams>
</edmx:Diagrams>
</edmx:Designer>
</edmx:Edmx>
.