使用Linq将相关表中的数据复制并插入到一组新的相关表中的最佳方法是什么

时间:2008-10-22 19:47:47

标签: asp.net-mvc linq linq-to-sql orm

我在网络游戏上工作,我使用asp.net mvc,linqtosql。

我有3个表存储默认游戏值:DefaultRegions,DefaultSubRegions和DefaultCountries。由于主键/外键,这3个表彼此相关。

当有人创建新游戏时,我需要将这些表的值复制到3个名为Regions,SubRegions和Countries的表中。在这3个表格中,保存了正在进行的游戏的值(添加了GameId以区分游戏)。

现在,我需要更新关系,因为主键显然会发生变化。

任何人都知道如何以有效的方式实现这一目标吗?

我的想法会涉及繁琐的foreach循环,也许其他人有想法?

编辑看起来我最初的想法是最好的方法,谢谢

1 个答案:

答案 0 :(得分: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();

这应该适合您,这是我找到复制数据的最简单方法。