0

ORM ツールとして EF5 を使用しています。次のように、DB 内の 3 つのテーブル間に関係があります。

DB モデル

表 1 が主な表です。これは、表 2 に対して「1 対 0..1」の関係にあります。表 2 は、表 3 に対して「多対 1」の関係にあります。

これを EF にインポートすると、表 2 が折りたたまれます (非表示になります)。次のようにして表 3 に移動します。

Table1.Table3

基本的に、コードを生成するための私の T4 テンプレートでは、表 1 と表 3 の間の関係が中間の表を隠しているかどうかを知る必要があります。

これどうやってするの?

次のように、ナビゲーション プロパティの関係の多重度を確認できるため、多対多のテーブル リンクは簡単です。

if (navProperty.FromEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many &&
    navProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many)

間にテーブルがないことはわかりますが、上記のモデルでは、多対 0..1 の関係になり、中央のテーブルが隠れている場合と隠れていない場合があります。

何か案は?

4

1 に答える 1

0

これに対する大まかな回避策を見つけることができました。次のとおりです。

bool collapsedTable = false;

string relationshipTypeName = navProperty.RelationshipType.Name;
var assocSet = container.BaseEntitySets.OfType<AssociationSet>()
                                       .Where(es => es.Name == relationshipTypeName && !es.ElementType.IsForeignKey)
                                       .FirstOrDefault();

if (assocSet != null)
{
    collapsedTable = true;
}

誰かが同様の問題に遭遇した場合。私が抱えていた問題を正確に修正しているようです...これが100%のケースで100%の解決策であるかどうかはわかりません。それに問題があれば、再訪します。

于 2013-09-20T13:24:57.673 に答える