Сначала создайте две таблицы с кодом. Они имеют отношение друг к другу между ними.Как скопировать вложенный ребенок (по внешнему ключу)
public class Bar
{
public int BarId { get; set; }
public string Name { get; set; }
public int FooId { get; set; }
public virtual Foo Foo { get; set; }
}
public class Foo
{
public int FooId { get; set; }
public string Name { get; set; }
public virtual List<Bar> Bars { get; set; }
}
Поэтому я создаю один экземпляр Foo foo1, в котором есть список баров. Затем я создаю еще один экземпляр Foo foo2, и я хочу, чтобы у него были все foo1 Bars.
Если я это сделать:
var bar = new Bar {
Name = "Bar 1"
};
var bar2 = new Bar
{
Name = "Bar 2"
};
var foo = new Foo
{
Name = "Foo 1",
Bars = new List<Bar> { bar, bar2 }
};
_db.Foos.Add(foo);
_db.SaveChanges();
var foo2 = new Foo
{
Name = "Foo 2",
Bars = foo.Bars.ToList()
};
_db.Foos.Add(foo2);
_db.SaveChanges();
Тогда foo2 будет иметь все Foo1 Бары, но foo1 не будет иметь ни одного. Так что я делаю что-то вроде этого:
var bars2 = new List<Bar>();
foreach (var _bar in foo.Bars)
{
bars2.Add(new Bar
{
Name = _bar.Name
});
}
var foo2 = new Foo
{
Name = "Foo 2",
Bars = bars2
};
Но это просто не кажется мне правильным. Разве нет более чистого способа сделать это? Я решил, что EF поймет и обработает это автоматически.
использование бирка C# для C# вопрос. C - совершенно другой язык. –
@BodoThiesen Извините, это была ошибка. – John
Не нужно извиняться. –