Craig Stuntzは、ここで問題のほとんどを引き起こすのはデザイナー関連の xml (デザイン サーフェス上のエンティティや関連付けなどの位置) であると説明しています。ただし、要素内の競合の解決 edmx:Runtime
は非常に達成可能です。
デザイナーに関連する xml での競合に対処するための最善の戦略は、カスタム レイアウトを犠牲にして既定のレイアウトに戻すことによって完全に回避することです。
トリックは、<Diagrams>
要素のすべてのコンテンツを削除することです。デザイナーは問題なく開き、既定のレイアウトが適用されます。
以下は、デフォルトのレイアウトで開く EDMX ファイルの例です。要素のコンテンツ<edmx:Runtime>
も削除されていることに注意してください。ただし、これは簡潔にするためのものであり、ソリューションの一部ではありません。
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
<!-- EF Runtime content -->
<edmx:Runtime>
<!-- Removed for brevity's sake only!-->
</edmx:Runtime>
<!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
<Designer xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
<Connection>
<DesignerInfoPropertySet>
<DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
</DesignerInfoPropertySet>
</Connection>
<Options>
<DesignerInfoPropertySet>
<DesignerProperty Name="ValidateOnBuild" Value="true" />
<DesignerProperty Name="EnablePluralization" Value="True" />
<DesignerProperty Name="IncludeForeignKeysInModel" Value="True" />
</DesignerInfoPropertySet>
</Options>
<!-- Diagram content (shape and connector positions) -->
<Diagrams>
</Diagrams>
</Designer>
</edmx:Edmx>
Diagram | Layout Diagram
ここで適用される既定のレイアウトは、デザイナーのコンテキスト メニューから選択したときに表示されるレイアウトとは一致しないことに注意してください。
更新: Entity Framework 5の時点で、これは少し簡単になります。そこに追加された複数のダイアグラムのサポートにより、ダイアグラム関連の xml が別のファイルにオフロードされます。いくつかの古いダイアグラム関連のタグが、Entity Framework のアップグレードを何度も経験した edmx ファイルに残っていることに注意してください。edmx ファイルから、Diagrams (子を含む) という名前のタグを削除しただけです。