2009-06-29 8 views
0

je cherchais un exemple de la façon de faire un insert dans LINQ to SQL et ici, il a été, il a dit:Problème avec l'insertion LINQ to SQL. .

NorthwindDataContext context = new NorthwindDataContext(); 
context.Products.Add(new Product(..)); 
context.SubmitChanges(); 

mais quand je regarde le bas, (dans mon cas, le tableau est UserInfo), la table n'a pas un « Ajouter » méthode:

public System.Data.Linq.Table<UserInfo> UserInfos 
    { 
     get 
     { 
      return this.GetTable<UserInfo>(); 
     } 
    } 

toute idée de ce que je fais mal ici?

Répondre

2

Vous devez utiliser la méthode InsertOnSubmit:

NorthwindDataContext context = new NorthwindDataContext(); 
context.Products.InsertOnSubmit(new Product(..)); 
context.SubmitChanges(); 

La méthode Add existe sur les membres EntitySet, est principalement utilisé lors de l'ajout des entités enfant à un parent d'un, par exemple:

var category = new Category{ Name = "Breveages"}; 


category.Products.Add(new Product{ Name = "Orange Juice"}); 
category.Products.Add(new Product{ Name = "Tomato Juice"}); 
category.Products.Add(new Product{ Name = "Cola"}); 

//... 

context.Categories.InsertOnSubmit(category); 
             // This will insert the Category and 
             // the three Products we associated to. 

EDIT: pour effectuer des opérations de mise à jour, il vous suffit de récupérer l'entité en faisant une requête, ou l'attacher, par exemple:

var customer = context.Customers.Single(c => c.CustomerID == "ALFKI"); 

customer.ContactName = "New Contact Name"; 
context.SubmitChanges(); 

DataContext pistes les changements de ses entités apparentées et lorsque la méthode SubmitChanges est appelée, il détecte que le changement, et générer une instruction SQL de mise à jour dans les coulisses pour faire l'opération de mise à jour ...

+0

Merci . . Cela fonctionne mais maintenant je me suis rendu compte que je ne veux pas en ajouter un nouveau mais plutôt mettre à jour un existant. .what est la méthode pour mettre à jour un enregistrement existant. – leora

+0

produit du produit = context.Products.Single (p => p.ProductID == 1); product.ProductName = "Kindle"; product.UnitPrice = 359.99m; context.SubmitChanges(); – jason

+0

Une chose à laquelle vous devez faire attention est l'objet DataContext. Lorsque vous effectuez la mise à jour, assurez-vous d'obtenir l'objet en premier dans la base de données, puis mettez-le à jour en utilisant un seul objet DataContext. Si vous essayez de joindre un objet d'un DataContext à un autre DataContext, tout l'enfer se déchaîne. – azamsharp