Какой лучший способ обновить список в базе данных? - PullRequest
0 голосов
/ 13 июня 2011

Если у меня есть следующий список в C #, который был загружен из базы данных

List<User> user = GetUsers(foo);

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

Я не использую EntityFramework, поэтому мне нужно сделать это с помощью SQL.

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Вот пример, который добавляет или вставляет строку.Он ищет строку с конкретным UserID.Если строка существует, она использует update для предоставления пользователю точки.Если строка не существует, создается новая строка с insert.

var connectionString = "Data Source=myServerAddress;" +
    "Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
using (var con = new SqlConnection(connectionString))
{
    con.Open();
    var com = con.CreateCommand();
    com.Parameters.AddWithValue("@UserId", userId);
    com.CommandText = @"
if exists (select * from YourTable where UserId = @UserId)
    update YourTable set TrollPoints = TrollPoints + 1 where UserId = @UserId
else
    insert YourTable (UserId, TrollPoints) values (@UserId, 1)
        ";
    com.ExecuteNonQuery();
}

Использование параметров позволяет серверу разбивать план выполнения, а также помогает против внедрения SQL.

1 голос
/ 13 июня 2011

Скопируйте этот список в datatable и установите datatable RowStat как (измененный, удаленный, новый) и обновите datatable, используя sqldataadapter

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