我已經使用下面的代碼將列表值插入到表中。 我指這個鏈接來實現這個過程。 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'的位置。 –