gpt4 book ai didi

c# - 如何将 ormlite 与 SQL Server 和 Mars 一起使用?

转载 作者:行者123 更新时间:2023-11-30 16:23:20 26 4
gpt4 key购买 nike

ServiceStack 爱好者,您好!

我们是军团(我希望如此),所以请帮助兄弟:)

我正在尝试使用一个返回两个结果集的 SQL Server 2008 存储过程调用来填充两个集合。我的连接字符串中有“MultipleActiveResultSets=True”,但我仍然收到此错误:

'r.NextResult()' threw an exception of type 'System.InvalidOperationException'

这是我的代码:

IList<ProjectMember> projectMembers = null;

IList<Project> projects = DbFactory.Run(dbCnx =>
{
using (var dbCmd = dbCnx.CreateCommand())
{
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.CommandText = "mySchema.myStoredProc";
dbCmd.Parameters.Add(new SqlParameter("@categoryId", categoryId));

using (profiler.Step("ProjectService.myStoredProc"))
{
var r = dbCmd.ExecuteReader();
projectMembers = r.ConvertToList<ProjectMember>();
return r.NextResult() ? r.ConvertToList<Project>() : null;
}
}
});

这可能吗?如果是这样,有人可以告诉我如何做到这一点的例子吗?

谢谢,

萨米尔

最佳答案

我找到了一种方法,但我不得不用 Dapper 替换 ormLite:

            using(var cnx = DbFactory.CreateConnection(Global.ConnectionString))
{
using (var multi = cnx.QueryMultiple("mySchema.myStoredProc", new { communityId, categoryId }, commandType: CommandType.StoredProcedure))
{
var projectMembers = multi.Read<ProjectMember>().ToList();
var projects = multi.Read<Project>().ToList();
BindProjectMembers(projects, projectMembers);

return projects;
}
}

它运行完美,速度是 MARS 改进前的两倍(从 40 毫秒到 20 毫秒)。

关于c# - 如何将 ormlite 与 SQL Server 和 Mars 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11684891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com