删除mvc中的一行

时间:2016-02-01 07:21:00

标签: c#

您好我无法删除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

2 个答案:

答案 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;

此处有更多信息:Passing parameter to stored procedure in C#