Сохранение данных из объекта в базу данных в приложениях .NET Framework

Замечание

Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.

Вы можете сохранить данные в объектах в базу данных, передав значения из объекта в один из методов DBDirect TableAdapter (например, TableAdapter.Insert). Дополнительные сведения см. в статье TableAdapter.

Чтобы сохранить данные из коллекции объектов, выполните итерацию по коллекции объектов (например, цикл for-next) и отправьте значения для каждого из объектов в базу данных с помощью одного из методов TableAdapter DBDirect.

По умолчанию DBDirect методы создаются на TableAdapter, который можно запускать непосредственно с базой данных. Эти методы могут вызываться напрямую и не требуются DataSet или DataTable объекты для согласования изменений для отправки обновлений в базу данных.

Замечание

При настройке TableAdapter основной запрос должен предоставить достаточно сведений для создания методов с использованием DBDirect. Например, если tableAdapter настроен для запроса данных из таблицы, которая не имеет определенного столбца первичного ключа, он не создает DBDirect методы.

Метод TableAdapter DBDirect Описание
TableAdapter.Insert Добавляет новые записи в базу данных и позволяет передавать отдельные значения столбцов в качестве параметров метода.
TableAdapter.Update Обновляет существующие записи в базе данных. Метод Update принимает исходные и новые значения столбцов в качестве параметров метода. Исходные значения используются для поиска исходной записи, а новые значения используются для обновления этой записи.

Этот TableAdapter.Update метод также используется для возврата изменений в наборе данных в базу данных, принимая DataSet, DataTable, DataRow или массив DataRowов в качестве параметров метода.
TableAdapter.Delete Удаляет существующие записи из базы данных на основе исходных значений столбцов, переданных в качестве параметров метода.

Сохранение новых записей из объекта в базу данных

  • Создайте записи, передав значения в TableAdapter.Insert метод.

    В следующем примере создается новая запись клиента в Customers таблице путем передачи значений currentCustomer в объект методу TableAdapter.Insert .

    private void AddNewCustomers(Customer currentCustomer)
    {
        customersTableAdapter.Insert( 
            currentCustomer.CustomerID, 
            currentCustomer.CompanyName, 
            currentCustomer.ContactName, 
            currentCustomer.ContactTitle, 
            currentCustomer.Address, 
            currentCustomer.City, 
            currentCustomer.Region, 
            currentCustomer.PostalCode, 
            currentCustomer.Country, 
            currentCustomer.Phone, 
            currentCustomer.Fax);
    }
    

Обновление существующих записей из объекта в базу данных

  • Измените записи путем вызова TableAdapter.Update метода, передачи новых значений для обновления записи и передачи исходных значений для поиска записи.

    Замечание

    Объект должен поддерживать исходные значения, чтобы передать их методу Update . В этом примере используются свойства с orig префиксом для хранения исходных значений.

    В следующем примере существующая запись в таблице Customers обновляется путем передачи новых и исходных значений в метод TableAdapter.Update через объект Customer.

    private void UpdateCustomer(Customer cust)
    {
        customersTableAdapter.Update(
            cust.CustomerID,
            cust.CompanyName,
            cust.ContactName,
            cust.ContactTitle,
            cust.Address,
            cust.City,
            cust.Region,
            cust.PostalCode,
            cust.Country,
            cust.Phone,
            cust.Fax,
            cust.origCustomerID,
            cust.origCompanyName,
            cust.origContactName,
            cust.origContactTitle,
            cust.origAddress,
            cust.origCity,
            cust.origRegion,
            cust.origPostalCode,
            cust.origCountry,
            cust.origPhone,
            cust.origFax);
    }
    

Удаление существующих записей из базы данных

  • Удалите записи, вызвав TableAdapter.Delete метод и передав исходные значения, чтобы найти запись.

    Замечание

    Объект должен поддерживать исходные значения, чтобы передать их методу Delete . В этом примере используются свойства с orig префиксом для хранения исходных значений.

    В следующем примере запись удаляется из таблицы Customers путем передачи исходных значений объекта Customer в метод TableAdapter.Delete.

    private void DeleteCustomer(Customer cust)
    {
        customersTableAdapter.Delete(
            cust.origCustomerID,
            cust.origCompanyName,
            cust.origContactName,
            cust.origContactTitle,
            cust.origAddress,
            cust.origCity,
            cust.origRegion,
            cust.origPostalCode,
            cust.origCountry,
            cust.origPhone,
            cust.origFax);
    }
    

Безопасность .NET

Вы должны иметь разрешение на выполнение выбранных INSERT, UPDATE или DELETE над таблицей в базе данных.