簡體   English   中英

大規模:使用存儲過程

[英]Massive: Using stored procedure

我正在嘗試使用 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 查詢有效,但不適用於存儲過程。 如果我在語句中創建一個斷點並在“快速觀察”中加載相同的斷點並擴展動態結果,它會啟動存儲過程。

DynamicModel.Query 返回一個 IEnumerable,因此查詢(或本例中的存儲過程)永遠不會在 SQL 中執行,直到需要在您的 C# 代碼中評估 IEnumerable。

您可以通過簡單地將 .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();

這只是一個粗略的猜測,因為我不明白您的錯誤消息是什么並且需要更多信息,但是您不能將您的 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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM