在执行存储过程时,在C#中向数据表添加值时遇到问题



我有一个接受表类型参数的存储过程。

TableType1
Id int,
Name varchar(50)
Create Procedure [proc1]
@insertDT TableType1 Readonly,
@deleteDT TableType1 Readonly
.....

现在我需要传递表类型参数,并使用C#和实体框架执行存储过程。

private void(List<User> insertUsers,List<User> deleteUsers)
{
DataTable insertUDT = new DataTable();
insertUDT.Columns.Add("Id", typeof(int));
insertUDT.Columns.Add("Name ", typeof(string));
DataTable deleteUDT = new DataTable();
deleteUDT.Columns.Add("Id", typeof(int));
deleteUDT.Columns.Add("Name ", typeof(string));
foreach(var row in insertUsers)
{
insertUDT.Rows.Add(row);
}
foreach(var row in deleteUsers)
{
deleteUDT.Rows.Add(row);
}
SqlParameter insertUserParams = new SqlParameter("@insertDT ", SqlDbType.Structured)
{
TypeName = "dbo.[TableType1],
Value = insertUDT
}
SqlParameter deleteUserParams = new SqlParameter("@deleteDT ", SqlDbType.Structured)
{
TypeName = "dbo.[TableType1],
Value = deleteUDT
}
context.Database.ExecuteSqlCommand("Exec proc1 @insertDT @deleteDT", insertUserParams, deleteUserParams);
}

使用此代码,我得到一个错误

@deleteDT附近的语法不正确。

请告诉我deleteUsers列表为空是否会导致问题,或者是否存在语法错误。

我发现了问题"quot;在执行上下文时丢失,它解决了错误

context.Database.ExecuteSqlCommand("Exec proc1 @insertDT, @deleteDT", insertUserParams, deleteUserParams);

最新更新