2008-10-22 9 views
2

Je travaille sur un jeu web, j'utilise asp.net mvc, linqtosql.Quel est le meilleur moyen de copier et insérer des données de tables connexes dans un nouveau jeu de tables liées avec Linq

J'ai 3 tables qui stockent des valeurs de jeu par défaut: DefaultRegions, DefaultSubRegions et DefaultCountries. Ces 3 tables sont liées les unes aux autres grâce aux clés primaires/étrangères.

J'ai besoin de copier les valeurs de ces tables dans 3 tables appelées Régions, SubRegions et Pays quand quelqu'un crée un nouveau jeu. Dans ces 3 tableaux, les valeurs des parties en cours sont sauvegardées (GameId est ajouté pour différencier les parties).

Maintenant, j'ai besoin de mettre à jour les relations, car les clés primaires changent évidemment.

Quelqu'un connaît un moyen d'y parvenir de manière efficace?

Mon idée impliquerait des boucles foreach encombrantes, peut-être que quelqu'un d'autre a une idée?

modifier ressemble à mon idée initiale est la meilleure façon d'aller, grâce

Répondre

3

Essayez cela, il doit créer et interrelation tout nouveau généré automatiquement les ID sur soumettre.

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(); 

Cela devrait fonctionner pour vous, et c'est la façon la plus simple de copier des données.