Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Entity Framework вложенный foreach


Автор: EASports 11.7.2018, 20:11
Всем привет!
Давно не могу решить проблему выборки данных.
Копирую записи связанных таблиц в БД.
Есть объект Land, который по полю Id связан один-ко-многим с таблицей Cat. Cat, в свою очередь, связана с таблицей Props один-ко-многим по полю Id.
Упрощенно это так:
Код

class Land
{
public int Id;
public string Name;
}

class Cat
{
public int Id;
public string Name;
public int LandId;
}

class Prop
{
public int Id;
public string Name;
public int CatId;
}



Необходимо произвести копирование объекта Land со всеми связанными полями в связанных таблицах.
То есть типа
Код

int x = 1;
Land oldland = db.Lands.Where(c => c.Id == x).FirstOrDefault();
Land newland = db.Lands.Create();
newland.Name = oldland.Name;
db.Lands.Add(newland);

IEnumerable<Cat> oldcats = db.Cats.Where(c => c.LandId == oldland.Id);
foreach (Cat cat in oldcats)
{
Cat ct = db.Cats.Create();
ct.Name = cat.Name;
ct.LandId = cat.LandId;
db.Cats.Add(ct);

IEnumerable<Prop> oldprops = db.Props.Where(c => c.CatId == cat.Id);
foreach(Prop prop in oldprops) /*вот здесь ругается на то, что объект DataReader не закрыт*/
{
Prop pr = db.Props.Create();
pr.Name = prop.Name;
pr.CatId = prop.CatId;
db.Props.Add(pr);
}
}

db.SaveChanges();


Подскажите, что нужно сделать, чтобы скопировать это "вложенный" объект? Ругается при попытке сделать вложенный foreach


Автор: mrstanley 17.8.2018, 20:39
с бд разбираться, в ней что-то не. связи непонятные ненмого

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)