【发布时间】:2017-11-26 09:28:10
【问题描述】:
如果我的条件失败为rdr.HasRows == true,我该如何响应我的控制器失败
public Employee DeleteEmpById(int key)
{
try
{
SqlCommand cmd = new SqlCommand("Sp_GetEmployeeById", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@EmpId", key);
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows == true)
{
}
else
// Here what I mention when rdr.HasRows false
}
控制器
public ActionResult DeleteById(int id)
{
var x = ObjRepo.DeleteEmpById(id);
return View(x);
}
【问题讨论】:
-
true时你会做什么。为什么你的方法会返回Employee的Instance(如果删除它就没有意义)?和Can we stop using AddWithValue() already?。为什么当它的名字暗示它应该删除数据时,你的方法会获取数据? -
你可以返回
null- 或者你可以抛出一个异常..... -
请附上
Sp_GetEmployeeById的源代码。 -
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: c# asp.net-mvc sqldatareader