我正在尝试使用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查询工作,但不是存储过程。如果我在语句中创建一个断点并在“快速监视”中加载它并展开动态结果,它会激活存储过程。
答案 0 :(得分:2)
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();
答案 1 :(得分: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");