2013-12-10 62 views
0

我有一個List<>對象,我必須將它作爲表值參數傳遞給SQL Server 2008中的存儲過程。下面是代碼:在C#asp.net中傳遞列表對象作爲表值參數時的異常

List<someType> listObjects = new List<someType>(); 
//Fill listObjects 
... 
... 
... 
sqlcmd.Parameters.AddWithValue("@myTableValuedParameter",listObjects).SqlDbType = SqlDbType.Structured; 
sqlcmd.ExecuteNonQuery(); 

代碼拋出一個異常,說:

對象必須實現IConvertible。

在過去,我已成功通過DataTable作爲表值參數。 objectsomeType類型的結構與我在Sql Server中創建的自定義類型相同。

缺少什麼我在這裏和什麼樣的變化,我需要包括使其運行成功地

+0

將您的列表<>轉換爲輸入DataTable?因爲它們是不同的東西。 – Kelmen

回答

1

有三樣東西可以作爲表值參數傳遞:

  • IEnumerable<SqlDataRecord>
  • DataTable
  • DbDataReader

你的列表中,除非它包含SqlDataRecord不能用於

Table-Valued Parameters

System.Data.SqlClient的支持填充從數據表,DbDataReader或System.Collections.Generic.IEnumerable表值參數([T:系統.Collections.Generic.IEnumerable`1)]對象。

0

Table-Valued Parameters documentationDataTableDbDataReaderIEnumerable<SqlDataRecord>被支持:

System.Data.SqlClient的支持填充從數據表,DbDataReader或System.Collections.Generic.IEnumerable

表值參數
相關問題