0

ストアド プロシージャを呼び出して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,
}
4

2 に答える 2