2015-11-19 1 views
1

Je suis très nouveau à EF, alors s'il vous plaît ours avec moi. J'ai 3 tables CustomerTable, ProductTable et OrdersTable.Entity framework - 3 tables mais seulement 2 montrent

La clé primaire de OrdersTable est la combinaison des clés primaires CustomerTable et ProductTable, qui sont respectivement CustomerID et ProductID.

OrdersTable a seulement deux colonnes qui sont CustomerID et ProductID

Dans le modèle EF, j'ai ajouté les 3 tables mais OrdersTable ne montre pas dans edmx.

Alors un de mes amis m'a dit que la 3ème table OrdersTable est une table "composite", car elle possède les clés primaires de CustomerTable et de ProductTable.

Donc, ma question est maintenant, en termes simples, ce qui rend une table composite avec ce scénario donné?

Je veux interroger/obtenir tout le contenu de OrdersTable, mais on m'a dit que je dois d'abord passer par CustomerTable ou ProductTable.

Je l'ai fait en utilisant linq to sql, donc CustomerTable peut voir ProductTable et vice versa, à cause de la propriété de navigation, mais je ne peux pas voir OrdersTable.

Quelle est la façon simple de faire cela, et pourquoi?

Répondre

0

Ceci est un défaut connu de l'Entity Framework, les clés composées seront converties en une association spéciale, pas une table ou un modèle. Une solution de contournement simple consiste à créer une nouvelle table avec 3 champs. Le premier champ (Id) défini comme clé primaire, les deux autres champs sont CustomerID et ProductID, et vous devez maintenir l'intégrité de la base de données en utilisant votre code non par le système de base de données lui-même ...