2008-09-09 2 views
1
var e1 = new E1(); 
e1.e2s.Add(new e2()); //e2s is null until e1 is saved, i want to save them all at the same time 
context.e1s.imsertonsubmit(e1); 
context.submitchanges(); 

Antwort

0

Nun - ich weiß nicht, ob Ihr ursprünglicher Codeblock funktionieren würde, aber ich schätze, Sie müssen Ihren neuen e2 als Einfügung bei submit markieren. Also:

var e1 = new E1(); 
var e2 = new e2(); 
e1.e2s.Add(e2); //e2s is null until e1 is saved, i want to save them all at the same time 
context.e1s.insertonsubmit(e1); 
context.e2s.insertonsubmit(e2); 
context.submitchanges(); 
0

dort gehen wir, anscheinend, wenn Sie einen anderen Ctor erstellen, müssen Sie tatsächlich für das Material in der Ctor die nicht arg Ctor aufrufen, um

1

Die Unterpunkte passieren wird entlang gespeichert mit dem Hauptelement und sogar Identitäten werden ordnungsgemäß festgelegt, wenn Sie Ihren DataClasses eine Zuordnung zwischen diesen Klassen geben.

Sie tun dies, indem Loadoptions auf Ihre O/R-Designer DataClasses wie folgt ergänzt:

MyDataContext mydc = new MyDataContext(); 
    System.Data.Linq.DataLoadOptions lo = new System.Data.Linq.DataLoadOptions(); 
    lo.LoadWith<E1>(p => p.e2s); 
    mydc.LoadOptions = lo; 

Auf diese Weise LINQ Sorgfalt werden die Unterpunkte des Hinzufügens, Sie müssen nicht jeden InsertOnSubmit von selbst. Ein Nebeneffekt: Nach dem Laden des Artikels werden auch die Unterpositionen abgerufen.

Verwandte Themen