5

次のようなカスタムタイプの手順があります。

CREATE PROCEDURE MyProc
    @Arg1 CustomArgType readonly
AS
BEGIN
.
.
.
END

カスタムタイプは次のとおりです。

CREATE TYPE dbo.CustomArgType as TABLE
(
    SomeInt int not null
)

上記のストアド プロシージャを C# で呼び出すにはどうすればよいですか?

どのようなアダプターが使用できますか? EF のような ORM は、そのようなストアド プロシージャと連携できますか?

4

2 に答える 2

0

それをテストするために、ストアド プロシージャを拡張して、パラメーター テーブルの最初の行を返すようにしました。

CREATE PROCEDURE MyProc
    @Arg1 CustomArgType readonly
AS
BEGIN
    select top 1 SomeInt from @Arg1
END

これで、C# で次のコードを使用して、ストアド プロシージャを実行できます。

using (var conn = new SqlConnection("Data Source=localhost;Initial Catalog=temp;User ID=sa"))
{
    conn.Open();

    DataTable dt = new DataTable();
    dt.Columns.Add("SomeInt", typeof(Int32));

    dt.Rows.Add(new Object[] { 3 });

    var command = conn.CreateCommand();
    command.CommandType = CommandType.StoredProcedure;
    command.CommandText = "MyProc";
    command.Parameters.Add(new SqlParameter("@Arg1", dt));
    object returnValue = command.ExecuteScalar();

}

returnValue私が期待した 3 です (パラメーター テーブルの 1 行目に挿入しました)。

残念ながら、私は EF についてあまり知らないので、同じことができるかどうかはわかりません。

于 2013-10-11T04:35:09.957 に答える