2016-02-29 38 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;