2008-11-28 8 views
0

J'essaie d'utiliser LinqToEntities et je viens de remarquer qu'il n'y a pas de champs de clé étrangère dans le modèle de données. Cela semble causer quelques problèmes en essayant d'ajouter un enregistrement. En lisant J'ai trouvé qu'en ajoutant un enregistrement, vous pouvez faire quelque chose comme ceci (le produit a une clé étrangère dans la table Catégories).LinqToEntities et Foreign Keys

Product myProduct = new Product(); 
myProduct.ProductName = ProductName; 
myProduct.Categories = db.CategorySet.Where(c => c.CategoryID == CategoryID).First(); 
db.AddToProductSet(myProduct); 
db.SaveChanges(); 

Je suis sûr qu'il existe une meilleure façon de procéder. Mais ma question est vraiment, est-ce comment cela fonctionne dans LinqToEntities? Il me semble que c'est beaucoup plus compliqué que de simplement lui donner une clé étrangère (c'est-à-dire myProduct.CategoryID = categoryid).

Si j'ai 5 clés étrangères dans une table, je vais devoir récupérer 5 objets pour les relier?

Je peux voir comment faire ce qui précède pourrait avoir du sens et avoir des avantages, mais ne voit pas l'avantage si vous essayez juste d'ajouter 1 enregistrement à la base de données qui a une clé étrangère dans une autre table.

Répondre

1

Pour tous ceux qui sont nouveaux dans Linq To Entities et qui se sont demandés la même chose que moi ... oui, c'est ainsi que Linq To Entities est. Vous devez référencer un objet réel au lieu de simplement donner une clé étrangère.

Cela me semble que cela ferait quelque chose de mauvais pour la performance, mais d'après ce que j'ai fait jusqu'ici, la performance n'est pas mauvaise du tout. En fait, ça a été mieux que Linq To SQL.

Questions connexes