您好我无法删除MVC中的单行,如果我尝试删除一行,则整行都会被删除。 这是我的删除方法
public string DeleteRegistrationForm(int ID)
{
string Msg = null;
Database database = DatabaseFactory.CreateDatabase();
DataSet ds = new DataSet();
// List<Registrationform> results = new List<Registrationform>();
try
{
string str = "DeleteStudentDetails";
DbCommand storedProcCommand = database.GetStoredProcCommand(str);
ds = database.ExecuteDataSet(storedProcCommand);
ds.GetChanges();
Msg = "DeleteOperationSuccessful";
// ds.delete("id = ID");
// results = ds.Tables[0].AsEnumerable()
// .Select(row => new Registrationform
// {
// Id = 0,
// Name = null,
// Age = 0,
// EMailId = null,
// phNumber = null)
// }).ToList();
}
catch
{
Msg = "DeleteOperationFailed";
}
return Msg;
}
这是我的存储过程
ALTER procedure [dbo].[DeleteStudentDetails]
as
begin
delete from Registrationform
where ID = ID
end
答案 0 :(得分:4)
除了@Jezzabeanz,您需要编辑您的程序..查询中的WHERE ID=ID
部分始终为true,并且始终删除所有记录。
首先,更改存储过程以包含参数。
ALTER procedure [dbo].[DeleteStudentDetails](@ID INT)
as begin
delete from Registrationform where ID=@ID
end
然后包括@Jezzabeanz答案也可以实现你所需要的。希望这会有所帮助。
答案 1 :(得分:3)
您需要在执行存储过程之前添加参数。我以前从没见过它。以下代码是一个粗略的示例,未经测试。
DbCommand storedProcCommand = database.GetStoredProcCommand(str);
storedProcCommand.Parameters.Add("@ID", SqlDbType.Int).Value = ID;