代码之家  ›  专栏  ›  技术社区  ›  kitsune

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

  •  2
  • kitsune  · 技术社区  · 16 年前

    我在玩网络游戏,我使用ASP.NET MVC,LinqToSQL。

    我有3个存储默认游戏值的表:defaultregions、defaultsubregions和defaultcountries。这三个表通过主键/外键相互关联。

    当有人创建新游戏时,我需要将这些表的值复制到3个表中,称为区域、次区域和国家。在这3个表中,保存正在进行的游戏的值(添加gameid以区分游戏)。

    现在,我需要更新关系,因为主键明显改变了。

    有人知道如何有效地实现这一点吗?

    我的想法会涉及到笨重的前臂环,也许其他人有想法?

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

    1 回复  |  直到 16 年前
        1
  •  3
  •   Nick Berardi    16 年前

    尝试一下,它应该在提交时创建并关联所有新的自动生成的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();
    

    这应该对你有用,这是我找到的最简单的复制数据的方法。