1

Massive micro-orm を使用してストアド プロシージャを実行しようとしています。

var tbl = new DynamicModel("Conn", tableName: "User", primaryKeyField: "UserID");
var result = tbl.Query("EXEC User_INSERT @0,@1,@2,@3", "7843bf9d-9cb8-495b-aaa5-785ac74b82a5", "7FBDDG58-B08E-4723-9477-C9E791CDF36E", "Admin", "11/20/2012");

デバッグ中は、Massive ライブラリにも移動しません。私も試してみました...

var result = tbl.Query(@"EXEC ...);

そしてまた

var result = tbl.Query("User_INSERT @0,...);

何も機能していないようです。同じハンドルで SELECT クエリは機能しますが、ストアド プロシージャは機能しません。ステートメントにブレークポイントを作成し、それを「クイックウォッチ」にロードして動的結果を展開すると、ストアドプロシージャが起動します。

4

2 に答える 2

3

DynamicModel.Query は IEnumerable を返すため、C# コードで IEnumerable を評価する必要があるまで、クエリ (この場合はストアド プロシージャ) は SQL で実行されません。

.ToList() を .Query() 呼び出しの最後に追加するだけで、IEnumerable の評価を強制できます。

var tbl = new DynamicModel("Conn", tableName: "User", primaryKeyField: "UserID");
var result = tbl.Query("EXEC User_INSERT @0,@1,@2,@3", "7843bf9d-9cb8-495b-aaa5-785ac74b82a5", "7FBDDG58-B08E-4723-9477-C9E791CDF36E", "Admin", "11/20/2012").ToList();
于 2014-11-26T20:36:05.997 に答える
0

エラーメッセージが何であるかがわからず、より多くの情報が必要なため、これは大まかな推測ですが、GUIDを文字列として渡すことはできません(文字列タイプとして受け入れない限り)。おそらく試してみてください

var result = tbl.Query("EXEC User_INSERT @0,@1,@2,@3", 
New Guid("7843bf9d-9cb8-495b-aaa5-785ac74b82a5"), 
New Guid("7FBDDG58-   B08E-4723-9477-C9E791CDF36E"), "Admin", "11/20/2012");
于 2012-11-21T01:43:23.073 に答える