Обновите/Вставьте к использованию таблицы SQLCeResultSet

У меня есть SQL Компактная База данных Выпуска, которую я периодически обновляю (через веб-сервисы).

Часть, где я пишу в базу данных, берет слишком долго. Я в настоящее время делаю его с Linq к Наборам данных (как замечено в этом вопросе). Я услышал что, если я делаю это с с SQLCeResultSet, что это будет работать быстрее.

Так, учитывая, что у меня есть таблица как это:

tblClient
   +- CLIENT_ID      {Unique identifier} (Primary Key)
   +- CLIENT_NAME    {varchar (100)}
   +- CLIENT_ACTIVE  {bit}

И у меня есть он в объекте, который я получаю от своих веб-сервисов, которые похожи на это:

class Client
{
   public Guid ClientID { get; set; }
   public String ClientName { get; set; }
   public bool Active { get; set; }
}

Как я получил бы 100 Объектов клиента в базу данных?

Обновление существующих строк и вставка строк, которые уже не находятся в базе данных (определены первичным ключом)?

Любой пример кода был бы большим. Я имею SqlCeConnection, но ничто иное.

Спасибо за любую справку!

8
задан Community 23 May 2017 в 12:14
поделиться

1 ответ

Это будет выглядеть примерно так:

( Отредактировано для вставки или обновления )

void Foo(SqlCeConnection connection)
{
    using (var cmd = new SqlCeCommand())
    {
        cmd.CommandType = CommandType.TableDirect;
        cmd.CommandText = "MyTableName";
        cmd.Connection = connection;
        cmd.IndexName = "PrimakryKeyIndexName";

        using (var result = cmd.ExecuteResultSet(
                            ResultSetOptions.Scrollable | ResultSetOptions.Updatable))
        {
            int pkValue = 100; // set this, obviously

            if (result.Seek(DbSeekOptions.FirstEqual, pkValue))
            {
                // row exists, need to update
                result.Read();

                // set values
                result.SetInt32(0, 1);
                // etc. 

                result.Update();
            }
            else
            {
                // row doesn't exist, insert
                var record = result.CreateRecord();

                // set values
                record.SetInt32(0, 1);
                // etc. 

                result.Insert(record);
            }
        }
    }
} 
13
ответ дан 5 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

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