2016-02-29 66 views
1

我想在下面的代码中给objTest.TestNumber赋予可选参数值。我的代码如下: -添加可选参数

public class TestInfo 
{ 
    public int Id { get; set; } 
    public string TestNumber { get; set; } 
}  



public string TestUpdate(TestInfo objTest) 
    { 
     int retVal = 0; 
     try 
     { 
      dataContext = new AccretiveAPIContext(GetConnection(locationId)); 
      retVal = dataContext.Database.ExecuteSqlCommand(
        "EXEC usp_TestUpdate @ID, @TestNumber", 
        new SqlParameter("@ID", objTest.Id), 
        new SqlParameter("@TestNumber", objTest.TestNumber), 

       ); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
     return retVal.ToString(); 
    } 

请告诉我需要做“@TestNumber”,objTest.TestNumber作为可选参数的变化。我想将其默认值设置为零(“0”)。

请帮忙。

+1

你可以这样做关于创建存储过程。或者如果你确实想在这里做到这一点,你不能只使用三元语句?新的SqlParameter(“@ TestNumber”,objTest.TestNumber ==“”?objTest.TestNumber:0) – Dane

+0

我想修改代码级别不在过程级别 –

+0

这不是你应该这样做的方式。在程序中使其成为可选项。 –

回答

6

甚至更​​容易 -

  retVal = dataContext.Database.ExecuteSqlCommand(
       "EXEC usp_TestUpdate @ID, @TestNumber", 
       new SqlParameter("@ID", objTest.Id), 
       new SqlParameter("@TestNumber", string.IsNullOrEmpty(objTest.TestNumber) ? "0" : objTest.TestNumber), 
+0

我的一个参数是整数,我该如何使用上面的语句 –

+0

不确定你的意思?你的TestNumber属性是一个字符串,Id是一个整数。 –

+0

如果我将“string TestNumber {get; set;}”更改为“int TestNumber {get; set;}” –

4

更改TestInfo类如下:

public class TestInfo 
{ 
    private string _testNumber; 

    public int Id { get; set; } 
    public string TestNumber 
    { 
     get 
     { 
      if (string.IsNullOrEmpty(_testNumber)) 
      { 
       _testNumber = "0"; 
      } 
      return _testNumber; 
     } 
     set { _testNumber = value; } 
    } 
} 

你也可以修改你的方法和这样说:

var testNumber = string.IsNullOrEmpty(objTest.TestNumber) ? "0" : obj.TestNumber;