Как лучше всего копировать и вставлять данные из связанных таблиц в новый набор связанных таблиц с помощью Linq - PullRequest
2 голосов
/ 22 октября 2008

Я работаю над веб-игрой, использую asp.net mvc, linqtosql.

У меня есть 3 таблицы, в которых хранятся значения игры по умолчанию: DefaultRegions, DefaultSubRegions и DefaultCountries. Эти 3 таблицы связаны друг с другом благодаря первичным / внешним ключам.

Мне нужно скопировать значения этих таблиц в 3 таблицы, называемые Регионами, Подрегионами и Странами, когда кто-то создает новую Игру. В этих 3 таблицах сохраняются значения для текущих игр (добавлен GameId для дифференциации игр).

Теперь мне нужно обновить отношения, поскольку первичные ключи явно меняются.

Кто-нибудь знает способ добиться этого эффективным способом?

Моя идея будет включать громоздкие циклы foreach, может, у кого-то есть идея?

edit похоже, моя первоначальная идея - лучший путь, спасибо

1 Ответ

3 голосов
/ 22 октября 2008

Попробуйте, это должно создать и связать все новые автоматически сгенерированные идентификаторы при отправке.

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

Это должно сработать для вас, и это самый простой из найденных мной способов копирования данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...