5

ストアド プロシージャを呼び出す必要がありますが、データ テーブル (iEnumerable) をパラメーターとして渡します。

SQL サーバー上の私の SP は、このパラメーターを次のように受け取ります。

@LIST_USERS dbo.LIST_USERINFO_TYPE READONLY

タイプは次のように定義されます。

CREATE TYPE [dbo].[LIST_USERINFO_TYPE] AS TABLE(
   [ID_USER] [int] NOT NULL,
   [ID_DATA] [int] NOT NULL,
   [HEADER_TXT] [varchar](100) NULL)

次に、呼び出し側で、次の方法でパラメーターを作成します。

list.Add(new UserInfoItem { IdUser = 401, IdData = 3, HeaderTxt = "" });
list.Add(new UserInfoItem { IdUser= 402, IdData= 2, HeaderTxt= "gotcha" });
list.Add(new UserInfoItem { IdUser= 403, IdData= 1, HeaderTxt= "pacific rim" });

dbConn.StoredProcedure(sp,
  new
    {
      LISTA_QUESTIONARIO = DomandeRisposteList
    });

実際にプロジェクトを起動すると、KeyNotFoundExceptionしようとして停止します

name.DbType = OrmLiteConfig.DialectProvider.GetColumnDbType(propertyInfo.PropertyType);

ServiceStackExtension.cs

どうすればこれを達成できますか?

4

3 に答える 3

2

Pizzaboysの回答に基づいて構築しています...サービススタックの新しいバージョンでは、ExecuteReader()の後にConvertToListを使用できないようです

私はこれをしなければなりませんでした:

var res = dbConn.Exec(dbCmd =>
{
    dbCmd.CommandType = CommandType.StoredProcedure;
    dbCmd.Parameters.Add(new SqlParameter("@LISTA_QUESTIONARIO", dataTableTmp));
    dbCmd.CommandText = "IF_SP_QUESTIONARIO_INSERT_TEST";
    rtnList = dbCmd.ConvertToList<DomandeRisposteItem>(); 
});
于 2016-04-14T15:21:35.647 に答える