ASP.net C # - объединение набора данных из MySQL в таблицу SQL Server 2008 - PullRequest
2 голосов
/ 28 января 2011

Я загружаю данные из таблицы базы данных MySQL в DataSet.

Пример:

MySqlConnection myConnection = new MySqlConnection(/*connection string*/);
MySqlCommand collectDataCommand = new MySqlCommand(/*Select comman*/, myConnection);

MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(collectDataCommand);
myConnection.Open();

DataSet tempData = new DataSet();
myDataAdapter.Fill(tempData);

Теперь, когда у меня есть эта информация в DataSet, Мне нужно MERGE (или UPSERT) эту информацию в таблицу соответствия в SQL Server 2008 базе данных.

Какой самый эффективный способ сделать это?Это вообще возможно?

Большое спасибо !!!

1 Ответ

0 голосов
/ 23 октября 2013

Наиболее эффективный способ сделать это - использовать Табличные параметры (TVP) , поддерживаемые SQL Server 2008.

Легко реализовать оба на Сторона SQL Server , а также сторона клиента C # (параметр будет иметь значение SqlDbType.Structured ).По существу, следующие шаги:

  • Определить новый «тип таблицы» в вашей базе данных
  • Добавить параметр в вашу хранимую процедуру, имеющий тип, который вы только что определили
  • Добавьте соответствующий параметр в ваш клиентский код C #

Вот выдержка из соответствующей статьи MSDN:

"Табличные параметры обеспечивают простой способ маршалинга нескольких строк данныхиз клиентского приложения в SQL Server, не требуя многократных циклов или специальной серверной логики для обработки данных. Табличные значения параметров можно использовать для инкапсуляции строк данных в клиентском приложении и отправки данных на сервер в виде одного параметризованногоКоманда. Входящие строки данных хранятся в табличной переменной, с которой затем можно работать, используя Transact-SQL.

"Доступ к значениям столбцов в табличных параметрах можно получить с помощью стандартных операторов SELECT Transact-SQL.Табличные значения строго типизированы, а их структура автоматически проверяется.Размер табличных параметров ограничен только памятью сервера. "

...