В LINQ to SQL, как я могу сделать так, чтобы я мог добавлять элементы в коллекцию объекта, не сохраняя его сначала? - PullRequest
2 голосов
/ 10 сентября 2008
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();

Ответы [ 3 ]

1 голос
/ 18 сентября 2008

Подэлементы будут сохранены вместе с основным элементом, и даже идентификаторы будут установлены правильно, если вы дадите своим DataClasses связь между этими классами.

Вы делаете это, добавляя LoadOptions в ваши классы данных O / R-Designer следующим образом:

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

Таким образом, LINQ позаботится о добавлении подэлементов, вам не нужно вставлять каждый из них по отдельности. Побочный эффект: при загрузке элемента также будут извлечены подэлементы.

0 голосов
/ 10 сентября 2008

мы идем, очевидно, когда вы создаете другой ctor, вы должны фактически вызвать no arg ctor для того, чтобы вещи в ctor произошли

0 голосов
/ 10 сентября 2008

Что ж, я не знаю, сработает ли ваш начальный блок кода, но я полагаю, что вы должны пометить ваш новый e2 как вставку при отправке. Таким образом:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...