Как передать объект класса C # в качестве параметра хранимой процедуре? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть класс заказов Orders.cs:

public class Orders
{
        public int OrderId { get; set; }
        public int PersonId { get; set; }
        public int EquipmentId { get; set; }
        public int OrderNumber { get; set; }
        public string OrderScope { get; set; }
}

Этот класс Orders выше точно такой же, как у моей базы данных Orders таблица.

Также у меня есть класскоторый содержит методы для работы с таблицей заказов с ADO.NET:

public class OrdersData
{
        public static int InsertOrder(Orders Order)
        {
            // Create the SQL Query for inserting a new order
            string sqlQuery = String.Format("Insert into Orders (OrderScope, PersonId , EquipmentId) Values('{0}', '{1}', '{2}');"
            + "Select @@Identity", Order.OrderScope, Order.PersonId, Order.EquipmentId);

            // Create and open a connection to SQL Server
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString);
            connection.Open();

            // Create a command object
            SqlCommand command = new SqlCommand(sqlQuery, connection);

            // Execute the command to SQL Server and return the newly created ID
            int newOrderID = Convert.ToInt32((decimal)command.ExecuteScalar());

            // Close and dispose
            command.Dispose();
            connection.Close();
            connection.Dispose();

            // Set return value
            return newOrderID;
        }
}

Как видите, метод InsertOrder принимает в качестве параметра объект Orders. Теперь мне нужно создать хранимую процедуру в моей базе данных, которая вставляет новый порядок, как в методе InsertOrder.

Я погуглил это, но я могу найти только некоторые уроки по передаче нескольких параметров хранимой процедуре, но это не совсем то, что мне нужно сделать.

1 Ответ

0 голосов
/ 29 октября 2019

В нашей компании мы используем инфраструктуру, которая работает только с объектами, передаваемыми в и из баз данных SQL Server. Однако для этого требуется среда (наша основывается на библиотеках Pconsoft), которая преобразует входной объект в параметры хранимой процедуры и преобразует наборы результатов в один объект или набор объектов. Там могут быть другие структуры, которые будут выполнять аналогичные задачи.

Однако, если вы просто пытаетесь отправить данные объекта ограниченным образом, вы можете сделать это, сериализовав объект как XML и передав его в хранимую процедуру SQL (в качестве параметра), которая считывает и раскрываетэтот XML. Вы можете сделать это, преобразовав XML в строку и передав его таким образом, но мы предпочитаем преобразовать данные в .NET в тип данных SqlXml и принять их в качестве параметра типа данных XML в хранимой процедуре в SQL Server. ,Надеюсь, это поможет.

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