2016-04-08 3 views
0

使用してSQL Serverデータベースにビジネス・オブジェクト配列を渡す: What are the best ways to send arrays from js (jQuery) to sql sproc? Array transmitting between layersは、どのように私の要件は、次のsimilerあるMicrosoft.Practices.EnterpriseLibrary

しかし、私はC#MVC 4を使用していますが、データベース操作のために、私はMicrosoft.Practicesを使用しています。エンタープライズライブラリ。 '/' アプリケーションで

サーバーエラー:

は、私は次のエラーを取得しています

 SqlDatabase sqlServerDB = new  SqlDatabase(SqlHelper.GetConnectionString()); 
     string query = @" EXEC Some_Proc "; 

     DbCommand cmd = sqlServerDB.GetSqlStringCommand(query); 
     cmd.CommandTimeout = 120; 
     sqlServerDB.AddInParameter(cmd, "@DataArray", DbType.Object, timesheetList); 
     result = Convert.ToInt64(sqlServerDB.ExecuteNonQuery(cmd)); 

を使用したデータアクセス層にDataTableオブジェクトを渡しています。

着信表形式データストリーム(TDS)リモートプロシージャコール(RPC)プロトコルストリームが正しくありません。パラメータ3( "@DataArray"):データ型0x62(sql_variant)には、型固有のメタデータに無効な型があります。

説明現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.Data.SqlClient.SqlException:受信テーブル形式データストリーム(TDS)リモートプロシージャコール(RPC)プロトコルストリームが正しくありません。パラメータ3( "@DataArray"):データ型0x62(sql_variant)には、型固有のメタデータに無効な型があります。

誰かが私を助けてくれますか?

+0

それはこれを試して[OK]をテーブルタイプ –

+0

をユーザー定義である - 'sqlServerDB.AddInParameter(CMD、 "@DataArray"、DbType.Structured、timesheetList);' –

+0

のDbType。 StructuredはMicrosoft.Practices.EnterpriseLibraryでは使用できません –

答えて

0

ご協力いただきありがとうございますKrishnaraj Rana最後に、私は以下のような溶液を得た:

SqlDatabase sqlServerDB = new SqlDatabase(SqlHelper.GetConnectionString()); 

string query = @" EXEC Some_Proc"; 

DbCommand cmd = sqlServerDB.GetSqlStringCommand(query); 
cmd.CommandTimeout = 120; 

SqlParameter temp = new SqlParameter("@DataArray", timesheetList); 
temp.SqlDbType = SqlDbType.Structured; 
temp.TypeName = "dbo.My_Custom_Table_Type_Name"; 
cmd.Parameters.Add(temp); 
result = Convert.ToInt64(sqlServerDB.ExecuteNonQuery(cmd)); 
関連する問題