2012-04-05 2 views
1

J'ai un problème dans le code-cadre de l'entité première, trois tables dans la base de données comme suit:question clé composite primaire dans le code-cadre de l'entité première

CREATE TABLE [Food](
PK [FoodId] [int] NOT NULL, 
[FoodName] [varchar](50) NULL) 

CREATE TABLE [Fruit](
PK [FruitId] [int] NOT NULL, 
[FruitName] [varchar](50) NULL) 

CREATE TABLE [FoodFruit](
PK, FK [FoodId] [int] NOT NULL, 
PK, FK [FruitId] [int] NOT NULL) 

Le modèle ne génère des aliments, des entités de fruits.

Mais si j'ajoute une nouvelle colonne [Notes] à la table FoodFruit, comme les notes:

CREATE TABLE [FoodFruit](
PK, FK [FoodId] [int] NOT NULL, 
PK, FK [FruitId] [int] NOT NULL, 
[Notes] [varchar](50) NULL) 

Le modèle va générer des entités alimentaires, fruits et FoodFruit. Donc, je suis confus, pourquoi le premier ne génère pas l'entité FoodFruit.

Répondre

2

C'est le comportement correct. Dans le premier cas, votre table FoodFruit n'est qu'une aide à la base de données pour modéliser les relations plusieurs-à-plusieurs. EF n'a pas besoin d'un tel assistant dans le modèle conceptuel, donc il cache cette table derrière une relation plusieurs-à-plusieurs directement modélisée. Dans le second cas, la table a des données supplémentaires - elle devient une entité complète, pas seulement une table de jonction pour la relation. EF le détecte et le mappe en tant que nouvelle classe.

+0

Merci pour votre réponse. J'ai encore une question. Dans le premier cas, si je veux insérer ou mettre à jour des données dans la table FoodFruit, il s'avère que l'entité de FoodFruit n'existe pas, que dois-je faire? –

+0

Food and Fruit devrait avoir des propriétés de navigation - collection d'entités connexes et vous ajouterez simplement un élément à cette collection. –

+0

Oui, merci pour votre aide. –