Priya-Kiko Ответов: 2

Как добавить строки в таблицу сущностей из другой таблицы сущностей


Привет,

У меня есть 2 таблицы сущностей, обе имеют одинаковую структуру. (счета, mast_bills).

законопроекты содержит дневные счета-фактуры продаж, и в конце дня таблица должна быть очищена после переноса строк в другую таблицу-клон mast_bills.

Аналогично Insert into....Select from... в SQL.

Что является лучшим способом, чтобы добиться этого в LINQ для сущностей таблиц ?

Заранее спасибо.

Что я уже пробовал:

foreach(bills obj_bills in Context.bills)
{
    mast_bills obj_mast_bills = new Context.mast_bills()
    Context.mast_bills.Add{
        billno = obj_bills.billno,
        date = obj_bills.date,
        ----
        -----
     };
}

The above code is fine for smaller tables but what about tables having many columns ?

-- Similar to this can anything be done.

foreach(bills objbills in Context.bills)  
    Context.mast_bills.Add(objbills)

2 Ответов

Рейтинг:
19

Priya-Kiko

Спасибо за ваш ответ.

То, что я ищу, - это не быстрая логика выполнения, а способ написания кода. Нет ли альтернативы, например, объекту вместо перечисления столбцов таблицы при добавлении записи в другую сущность ???

Maciej Los

Я уверен, что использование BulkCopy-самый простой и быстрый способ. Каждый метод, который проходит через сбор строк (данных), будет намного медленнее, чем BulkCopy. Пожалуйста, перейдите по ссылкам, которые я вам предоставил. Там вы найдете более подробную информацию об этом.

Priya-Kiko

Спасибо. Эти ссылки действительно полезны, и я смог получить там много информации. Но мой запрос находится в приведенном ниже блоке (по одной из этих ссылок)

var contacts = новый список контактов<Contact & gt;();
for (int i = 0; i < 1000; i++)
{
var entity = новый контакт
{
CustomerId = Guid.Метод newguid(),
FirstName = "Рубен",
Фамилия = "Geers",
Адрес электронной почты = "geersch@gmail.c
};
контакты.Добавить(сущность);
}

В приведенном выше коде значения столбцов в моем случае берутся из другой таблицы. Это единственный способ, чтобы явно перечислить столбцы-даже если в таблице есть 50 столбцов, например.

Рейтинг:
10

Priya-Kiko

С помощью подсказок и справочных ссылок, размещенных компанией Мацей Лос Я нашел решение своего вопроса. Спасибо тебе, Мацей Лос.

List<bills> lstbills = Context.bills.ToList();
using (SqlBulkCopy sqlbulkCopy = new SqlBulkCopy(mconn, SqlBulkCopyOptions.Default, mtrans))
{
        sqlbulkCopy.DestinationTableName = "mast_bills";
        sqlbulkCopy.WriteToServer(lstbills.AsDataReaderOfObjects());
}


Чтобы получить расширение AsDataReaderOfObjects() , я добавил Бенгрибаудольк.IEnumerableHelpers.DataReaderAdapter как пакет nuget.


Maciej Los

5ed!