最初に2つのテーブルをコードで作成します。彼らはそれらの間に1対1の関係を持っています。入れ子になった子をコピーする方法(外来キーで)
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のインスタンスを1つ作成します。これは、Barsのリストを持ちます。次に、私は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
謝罪する必要はありません。 –