Вставьте/Выберите с Linq-To-SQL

Есть ли способ сделать вставление/выбирание с Linq, который переводит на этот sql:

INSERT INTO TableA (...)
SELECT ...
FROM TableB
WHERE ...
7
задан bzlm 17 January 2010 в 12:35
поделиться

2 ответа

Да, @bzlm сначала охватил его, но если вы предпочитаете что-то более подробнее:

// dc = DataContext, assumes TableA contains items of type A
var toInsert = from b in TableB
               where ...
               select new A 
               {
                   ...
               };

TableA.InsertAllOnSubmit(toInsert);
dc.SubmitChanges();

Я своего рода предпочитаю это с точки зрения обзора / обслуживания, как я думаю, это немного более очевидным, что происходит в выборе Отказ


В ответ на наблюдение @JFBeaulac:

Обратите внимание, что это не будет , генерируют показанный SQL - до сих пор, насколько я знаю, на самом деле не может генерировать напрямую с помощью LINQ (для SQL), вам нужно будет обойти LINQ и перейти прямо в базу данных. Функционально его следует добиться того же результата в том, что он выполнит выделение и затем вставит данные - но она будет круглосуточно данных с сервера к клиенту и обратно, поэтому не может быть оптимальным для больших объемов данных.

9
ответ дан 7 December 2019 в 01:21
поделиться
context
  .TableA
  .InsertAllOnSubmit(
    context
      .TableB
      .Where( ... )
      .Select(b => new A { ... })
  );
1
ответ дан 7 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: