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,因此查询(或本例中的存储过程)永远不会在 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();
于 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 回答