2009-07-08 5 views
8

Je souhaite ajouter un enregistrement à une table SQL Server à l'aide de Entity Framework. L'entité de ma table possède des clés étrangères et possède donc des propriétés de navigation pour ces champs. Lors de l'ajout d'un nouvel enregistrement/d'une nouvelle entité, comment puis-je remplir les champs de clé étrangère puisqu'ils n'apparaissent pas en tant que propriétés de l'entité?Entity Framework - Comment ajouter aux entités avec des propriétés de navigation

Répondre

15

La façon la plus simple est de faire une requête pour les entités liées et utiliser les propriétés de navigation:

-à-dire

Product p = new Product{ 
    ID = 5, 
    Name = "Bovril", 
    Category = ctx.Categories.First(c => c.ID == 5) 
}; 
ctx.AddToProducts(p); 
ctx.SaveChanges(); 

Si vous voulez éviter la base de données requête la meilleure approche est probablement d'utiliser un entité sTUB-à-dire

// this is a stub, a placeholder for the real entity 
Category c = new Category {ID = 5}; 
// attach the stub to the context, similar to do a query 
// but without talking to the DB 
ctx.AttachTo("Categories", c); 
Product p = new Product{ 
    ID = 5, 
    Name = "Bovril", 
    Category = c 
}; 
ctx.AddToProducts(p); 
ctx.SaveChanges(); 

Si vous voulez plus d'aide sur cette technique stub vérifier cette blog post sur le sujet.

+0

J'ai essayé les réponses suggérées et elles ont toutes deux fonctionné très bien. Merci beaucoup pour votre aide! –

Questions connexes