【发布时间】:2020-02-21 11:32:39
【问题描述】:
我有一个订单类 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 方法。
我已经用谷歌搜索了这个,但我只能找到一些关于将多个参数传递给存储过程的教程,但这并不是我需要做的。
【问题讨论】:
-
你用Dapper
-
使用“低级”ADO.NET 和原始 SQL (
SqlCommand),没有办法您可以将“对象”作为参数传递。 ORM 之类的 Dapper 或实体框架将允许这样做,因此您不必再处理在 ADO.NET/SQL 中设置所有单个值的所有细节。 -
@marc_s 好吧,从技术上讲,您可以将数据表或
IEnumerable<T>作为表值参数传递,但这很愚蠢。
标签: c# asp.net sql-server stored-procedures ado.net