2009-04-24 7 views

Antwort

2

Die Datenbank reicht nicht, bis Sie SubmitChanges aufrufen. Es gibt keine greifbaren Kosten, die mit mehreren Anrufen an InsertOnSubmit verbunden sind - warum also nicht einfach das tun?

Dies führt immer noch zu zwei TSQL INSERT Befehlen - es ist einfach nicht möglich, in zwei Tabellen in einem einzigen regulären INSERT Befehl einzufügen.

+0

"Dies wird immer noch zu" sollte wahrscheinlich lesen "Dies wird immer noch in zwei resultieren" –

+1

@Joe - danke. Meine stoischen Finger! –

3

Wenn Ihre Tabellen haben einen Primärschlüssel/Fremdschlüsselbeziehung zueinander sind, dann haben Sie auch zwei Objekte, die Sie miteinander verknüpfen können:

InternetStoreDataContext db = new InternetStoreDataContext(); 

Category c = new Category(); 
c.name = "Accessories"; 
Product p = new Product(); 
p.name = "USB Mouse"; 
c.Products.Add(p); 

//and finally 
db.Categories.Add(c); 
db.SubmitChanges(); 

Das Ihr Objekt und alle verknüpften Objekte hinzufügt, wenn die Einreichung die Veränderungen.

Beachten Sie, dass dafür ein Primärschlüssel in beiden Tabellen erforderlich ist. Andernfalls bietet Ihnen LINQ keine Verknüpfungsmöglichkeit.

Hier sind gute Beispiele für LINQ to SQL verwenden: http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

+0

was ist db, db ist databasecontext obj oder irgendein anderes Objekt – vineth

Verwandte Themen