次のコードを使用してリストの値をテーブルに挿入しました。 私はこの手順を実装するためにこのリンクを参照します。 Passing list of objects to a SQL Server stored procedure and insert records using asp.net core指定されたキャストは無効です.. SQLデータレコード
private List<SqlDataRecord> GetHotelList(List<HotelInfo> list, string RequestRef)
{
List<SqlDataRecord> datatable = new List<SqlDataRecord>();
SqlMetaData[] sqlMetaData = new SqlMetaData[12];
sqlMetaData[0] = new SqlMetaData("HotelID", SqlDbType.Int);
sqlMetaData[1] = new SqlMetaData("RequestReference", SqlDbType.VarChar, 15);
sqlMetaData[2] = new SqlMetaData("FromDate", SqlDbType.DateTime);
sqlMetaData[3] = new SqlMetaData("ToDate", SqlDbType.DateTime);
sqlMetaData[4] = new SqlMetaData("Nights", SqlDbType.Int);
sqlMetaData[5] = new SqlMetaData("MealPlan", SqlDbType.VarChar, 10);
sqlMetaData[6] = new SqlMetaData("LastUpdatedBy", SqlDbType.VarChar, 50);
sqlMetaData[7] = new SqlMetaData("LastUpdatedDate", SqlDbType.DateTime);
sqlMetaData[8] = new SqlMetaData("Status", SqlDbType.Int);
sqlMetaData[9] = new SqlMetaData("StarCategory", SqlDbType.Int);
sqlMetaData[10] = new SqlMetaData("CreatedDateTime", SqlDbType.DateTime);
sqlMetaData[11] = new SqlMetaData("CreatedUserId", SqlDbType.VarChar, 15);
foreach (var info in list)
{
SqlDataRecord row = new SqlDataRecord(sqlMetaData);
int? hotelId = GetHoteId(info.HotelName);
row.SetValues(hotelId, RequestRef, info.FromDate, info.ToDate, info.Nights, info.MealPlan, info.StarCategory, info.Status, info.LastUpdatedBy, DateTime.Now, DateTime.Now, info.CreatedUserId);
datatable.Add(row);
}
return datatable;
}
しかし、私は)(row.SetValuesで '指定されたキャストは有効ではありません' というエラーを取得しています。私は何か手がかりを得ることができますか?
ありがとうございました。
** hotelId **をヌル可能にすることは、ナッツがベストアイデアです。 – VDN
実際に調べることができる[mcve]を持っていると、多くの助けになりますが、一見すると、メタデータ配列とは異なる順序でパラメータを 'SetValues'に渡すように見えます - 具体的には、' Status'を'LastUpdatedDate'が出現すると予想されるかもしれません。 –