ストアド プロシージャを呼び出してDataTable
値を入力する C# のメソッドがあります。ストアド プロシージャからの戻り値が文字列であるのに対し、C# で値を保持するために使用しているプロパティは、型が列挙型であるクラスに由来するという行に問題があります。キャストしようとしましたが、このエラーが発生し続けます:
指定されたキャストは無効です。
これは、ストアド プロシージャを呼び出す方法です。
public void GetOrder()
{
ConnectionStringSettings connectionString = ConfigurationManager.ConnectionStrings["T_DB"];
string conString = connectionString.ConnectionString;
DataSet ds = new DataSet();
using ( SqlConnection con = new SqlConnection(conString))
{
SqlCommand cmd = new SqlCommand("LH_Get_order", con);
cmd.Parameters.AddWithValue("@onum", 45642);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter ad = new SqlDataAdapter(cmd);
ad.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
this.BatchId = ds.Tables[0].Rows[0]["gbo_batch_id"].ToString();
this.ExternalRefId = ds.Tables[0].Rows[0]["o_num"].ToString();
this.LoanId = ds.Tables[0].Rows[0]["o_loan"].ToString();
this.OrderType = (eOrderType)ds.Tables[0].Rows[0]["OrderType"]; //problem
}
}
}
次の行で問題が発生します。
this.OrderType = (eOrderType)ds.Tables[0].Rows[0]["OrderType"];
これは私のOrderType
財産です:
public eOrderType OrderType
{
get { return _OrderType; }
set { _OrderType = value; }
}
これはeOrderType
列挙型です:
public enum eOrderType : int {
[System.Runtime.Serialization.EnumMemberAttribute(Value="CVA BPO")]
CVABPO = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
ExteriorBPO = 2,
[System.Runtime.Serialization.EnumMemberAttribute()]
Inspection = 3,
[System.Runtime.Serialization.EnumMemberAttribute()]
RepairEstimate = 4,
}