我正在尝试使用大量的micro来执行存储过程。
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");
在调试时,它甚至不会进入大量的库中。我也试过了.
var result = tbl.Query(@"EXEC ...);
而且还
var result = tbl.Query("User_INSERT @0,...);
似乎什么都不起作用。具有相同句柄的SELECT查询可以工作,但不能用于存储过程。如果我在语句中创建一个断点,并在“快速观察”中加载相同的断点,然后展开“动态结果”,它就会触发存储过程。
发布于 2014-11-27 04:36:06
DynamicModel.Query返回一个IEnumerable,因此在IEnumerable需要在C#代码中求值之前,查询(或本例中的存储过程)永远不会在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();
发布于 2012-11-21 09:43:23
这只是一个粗略的猜测,因为我不理解您的错误消息是什么,并且需要更多信息,但是您不能将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");
https://stackoverflow.com/questions/13483575
复制相似问题