2

私は Web ゲームに取り組んでおり、asp.net mvc、linqtosql を使用しています。

デフォルトのゲーム値を格納する 3 つのテーブルがあります: DefaultRegions、DefaultSubRegions、および DefaultCountries。これらの 3 つのテーブルは、主キー/外部キーのおかげで相互に関連付けられています。

誰かが新しいゲームを作成するときに、これらのテーブルの値を Regions、SubRegions、Countries という 3 つのテーブルにコピーする必要があります。これら 3 つのテーブルには、進行中のゲームの値が保存されます (ゲームを区別するために GameId が追加されます)。

ここで、主キーが明らかに変更されるため、関係を更新する必要があります。

効率的な方法でこれを達成する方法を知っている人はいますか?

私のアイデアには面倒な foreach ループが含まれますが、他の誰かがアイデアを持っているのではないでしょうか?

編集は私の最初のアイデアが最善の方法であるように見えます、ありがとう

4

1 に答える 1

3

これを試してみてください。送信時にすべての新しい自動生成 ID が作成され、相互に関連付けられるはずです。

var defaultRegions = from r in DefaultRegions
             select r;

IList<Region> rlist = new List<Region>();
foreach(var dr in defaultRegions) {
    var r = new Region {
        Name = dr.Name };

    foreach(DefaultSubRegion dsr in dr.DefaultSubRegions) {
        var sr = new SubRegion {
            Name = dsr.Name };

        foreach(DefaultCountries dc in dsf.DefaultCountries) {
            var c = new Country {
                Name = dc.Name };

            sr.Countries.Add(c);
        }

        r.SubRegions.Add(sr);
   }

   rlist.Add(r);
}

DataContext dc = new DataContext();
dc.Regions.InsertAllOnSubmit(rlist);
dc.Submit();

これはうまくいくはずです。データをコピーするために私が見つけた最も簡単な方法です。

于 2008-10-22T19:56:42.743 に答える