このエラーを解決する方法がわかりません。'Oracle.ManagedDataAccess.Types.OracleDecimal []'タイプのオブジェクトを 'System.IConvertible'にキャストできません
私はクラス
public class MyClass
{
public OracleDecimal ID { get; set; }
public string FIELD1 { get; set; }
public string FIELD2 { get; set; }
public OracleDate FIELD3 { get; set; }
}
を持っている私は、SPへの呼び出しを行い、その後のリストを構築しました。
OracleParameter p_ID = new OracleParameter("p_ID", OracleDbType.Decimal, records.Select(x => x.ID).ToArray(), ParameterDirection.Input);
OracleParameter p_FIELD1 = new OracleParameter("p_FIELD1", OracleDbType.Varchar2, records.Select(x => x.FIELD1).ToArray(), ParameterDirection.Input);
OracleParameter p_FIELD2 = new OracleParameter("p_FIELD2", OracleDbType.Varchar2, records.Select(x => x.FIELD2).ToArray(), ParameterDirection.Input);
OracleParameter p_FIELD3 = new OracleParameter("p_FIELD3", OracleDbType.Date, records.Select(x => x.FIELD3).ToArray(), ParameterDirection.Input);
var result = context.Database.ExecuteSqlCommand("BEGIN MY_PACKAGE.MY_PROC(:p_ID, :p_FIELD1, :p_FIELD2, :p_FIELD3); END;", p_ID, p_FIELD1, p_FIELD2, p_FIELD3);
は、しかし、私はエラーを取得する 型のオブジェクトをキャストすることができません「Oracle.ManagedDataAccess.Types.OracleDecimalは[]」「System.IConvertible」とタイプします。
このエラーを解決する方法がわかりません。私は私のリストを作成するとき
私は次があります。
OracleDate myDate = new OracleDate(DateTime.Now);
var myRecord = new MyClass
{
ID = ((OracleDecimal)ID).Value,
FIELD1 = field1,
FIELD2 = field2,
FIELD3 = myDate
};
任意の提案をいただければ幸いです。
この場合、ストアされたproc xの時間が呼び出されます。私はprocが一度だけ呼び出されるように、procに一連のデータを渡そうとしています。 – PrivateJoker
@ JDS次に、プロシージャのシグネチャを更新する必要があります。今のように、あなたの手続きは引数として単一の値しか取ることができず、それらのリストではありません。 –
清算していただきありがとうございます。署名を変更したので、今度はSPに電話をかけ、3000レコードを0.24秒で挿入することができます。 – PrivateJoker