Ситуация. есть DataContext.
В нём два набора
public System.Data.Linq.Table<class1> class1s;
public System.Data.Linq.Table<class2> class2s;
таблица class2 в базе ссылается на таблицу class1. соответственно в class1 присутствует
EntitySet<class2> class2es.
ну а теперь проблема

пользователь надобавлял в class2es несколько строк. но потом передумал и решил отменить изменения. каким образом можно скопом перегрузить все class2es? мне к сожалению в голову приходит только что-то типа
foreach (class1 cl1 in class1s){
cl1.class2es.Clear();
cl1.class2es = class2s.Where (w => w.idclass1 = cl1.idclass1);
}
может этого вообще делать не нужно, может у меня моск зашорен работой через DataSet + Ado. В общем подскажитье плз. как поступить...
Такое впечатление что аббревиатура LINQ у всех здесь вызывает стойкое отвращение
Здравствуйте, Ziggi111, Вы писали:
Z>ну а теперь проблема
Z>пользователь надобавлял в class2es несколько строк. но потом передумал и решил отменить изменения.
Можно из Table-а вытащить оригинальное значение Entity
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Ziggi111, Вы писали:
Z>>ну а теперь проблема
Z>>пользователь надобавлял в class2es несколько строк. но потом передумал и решил отменить изменения.
L>Можно из Table-а вытащить оригинальное значение Entity
Не понял

при чём тут оригинальное значение.
void Run (){
AddMethod ();
CancelChanges ();
// Вот тут хочу видеть оригинальные данные, в которых
class1 row = DataContext1.class1s.where(w.idclass1 == 1).Single();
IEnumerable ww = row.class2es.Where(w=>w.idclass2 == 15 || w.idclass2 == 16); // тут должно быть пусто
}
void AddMethod (){
class1 row = DataContext1.class1s.where(w.idclass1 == 1).Single();
row.class2es.Add (new class2(idclass2 = 15, name = "Запись1"));
row.class2es.Add (new class2(idclass2 = 16, name = "Запись2");
}
void CancelChanges (){
DataContext1.Refresh (RefreshMode.OverwriteCurrentValues, class1s);
DataContext1.Refresh (RefreshMode.OverwriteCurrentValues, class2s);
// А вот дальше непонятно
}
Здравствуйте, Ziggi111, Вы писали:
L>>Можно из Table-а вытащить оригинальное значение Entity
Z>Не понял
при чём тут оригинальное значение.
Сорри, видимо не понял что ты хочешь.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Ziggi111, Вы писали:
L>>>Можно из Table-а вытащить оригинальное значение Entity
Z>>Не понял
при чём тут оригинальное значение.
L>Сорри, видимо не понял что ты хочешь.
Ну может есть какие-то решения как это реализовать? ибо ну как-то совсем не весело бежать по всем элементам главной таблицы и перезагружать подчинённые наборы
Здравствуйте, Ziggi111, Вы писали:
Z>Ситуация. есть DataContext.
Z>В нём два набора
Z>public System.Data.Linq.Table<class1> class1s;
Z>public System.Data.Linq.Table<class2> class2s;
Z>таблица class2 в базе ссылается на таблицу class1. соответственно в class1 присутствует
Z>EntitySet<class2> class2es.
Z>ну а теперь проблема
Z>пользователь надобавлял в class2es несколько строк. но потом передумал и решил отменить изменения. каким образом можно скопом перегрузить все class2es? мне к сожалению в голову приходит только что-то типа
Z>Z>foreach (class1 cl1 in class1s){
Z> cl1.class2es.Clear();
Z> cl1.class2es = class2s.Where (w => w.idclass1 = cl1.idclass1);
Z>}
Z>
Z>может этого вообще делать не нужно, может у меня моск зашорен работой через DataSet + Ado. В общем подскажитье плз. как поступить...
Нашёл вариант, но осталось одно "НО"
var cs = this.GetChangeSet ();
var removed = cs.Inserts.Where (w => w.GetType () == typeof (sourceinfo));
foreach (sourceinfo row in removed)
row.sourceinfogroup.sourceinfos.Remove (row);
А "НО" заключается в том, что при такой конструкции объект не исчезает из Inserted и не попадает в Deleted. Поэтому пришлось сделать так.
var cs = this.GetChangeSet ();
var removed = cs.Inserts.Where (w => w.GetType () == typeof (sourceinfo));
foreach (sourceinfo row in removed) {
if (row.sourceinfogroups != null)
row.sourceinfogroup.sourceinfos.Remove (row);
}
Кривовато мне кажется. Может кто знает почему объект не исчезает из Inserted и не попадает в Deleted?