2009-06-29 22 views
0

i wurde bei einem Beispiel sucht, wie ein Einsatz in Linq to SQL tun, und hier war es gesagt:Problem mit LINQ to SQL einfügen. .

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

, aber wenn ich auf der unten schauen, (in meinem Fall die Tabelle ist Userinfo), ist die Tabelle nicht eine „Add“ Methode hat:

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

jede Ahnung, was ich falsch hier tue?

Antwort

2

Sie sollten die InsertOnSubmit Methode verwenden:

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

Die Add-Methode gibt es auf den EntitySet Mitglieder wird meist verwendet, wenn Kinder Einheiten zu einem Elternteil ein, zum Beispiel das Hinzufügen:

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: Um Update-Vorgänge durchzuführen, müssen Sie nur die Entität abfragen, indem Sie eine Abfrage ausführen oder sie anhängen, zum Beispiel:

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

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

Die Datacontext verfolgen die Veränderungen ihrer verbundenen Unternehmen, und wenn die SubmitChanges Methode aufgerufen wird, wird es diese Änderung zu erfassen, und eine Update-SQL-Anweisung hinter den Kulissen erzeugen, um den Aktualisierungsvorgang zu tun ...

+0

Vielen Dank . . das funktioniert, aber jetzt wurde mir klar, dass ich keine neue hinzufügen, sondern eine bestehende aktualisieren möchte. .Was ist die Methode zum Aktualisieren eines vorhandenen Datensatzes. – leora

+0

Produkt = context.Products.Single (p => p.ProductID == 1); product.ProductName = "Kindle"; product.UnitPrice = 359,99m; context.SubmitChanges(); – jason

+0

Eine Sache, um die Sie vorsichtig sein müssen, ist das DataContext-Objekt. Achten Sie beim Aktualisieren darauf, dass das Objekt zuerst aus der Datenbank abgerufen und dann mit einem einzelnen DataContext-Objekt aktualisiert wird. Wenn Sie versuchen, ein Objekt eines DataContext an einen anderen DataContext anzuhängen, bricht die Hölle los. – azamsharp