gpt4 book ai didi

asp.net - 在创建 ASP.NET Web 应用程序时将数据库从 SQL Server 更改为 PostgreSQL?

转载 作者:行者123 更新时间:2023-11-29 14:26:46 25 4
gpt4 key购买 nike

我目前使用 SQL Server 作为数据库,使用 Dapper (ORM) 将关系映射到模型类。我在 Dapper 中使用了多次读取,因此我能够在一次调用数据库时获取多个表。但是由于某种情况,我必须将数据库连接从 SQL Server 更改为 PostgreSQL。在 Postgresql 中,没有使用查询多次读取功能的选项工具。

在Postgresql中有什么办法可以处理下面的情况吗?

using (var multi = conn.QueryMultiple(query, param, commandType: CommandType.StoredProcedure))
{
obj.InventoryItemOrder = multi.Read<InventoryItemOrder>()
.FirstOrDefault(); //getting single object data (so firstordefault)
obj.InventoryItemDataModel = multi.Read<InventoryItemDataModel>(); //list
}

在构建 ASP.NET 应用程序时,我可以使用这个概念来处理 PostgreSQL 和 Dapper 吗?

最佳答案

我对Dapper 不熟悉,但快速浏览一下at the doc ,看起来 QueryMutiple 基本上是在同一个命令中运行多个语句(即用分号分隔),然后映射每个语句的结果。

您当然可以使用 Postgres 完成第一部分:将多个语句组合成一个,用分号分隔。它们都将运行。但是,我不知道 Postgres 本身有什么会自动单独返回语句的结果。根据您与 Postgres 交互和获取结果的具体方式,您或许可以创建一个自定义方法来映射这些结果。

从纯数据库的角度来看,只要您在同一连接上发出单独的查询,您就不会从 QueryMultiple 中描述的行为中获得太多(如果有的话)性能优势。

昂贵的是连接启动和拆卸,甚至 Dapper 都必须为每个查询发布和映射结果,因此那里没有性能优势。相反,它本质上是语法糖的问题。

如果 DapperPostgres 兼容,快速查看文档并不清楚。如果是,并且那里支持它的 QueryMultiple 调用,那么它可能正在处理 ORM 本身内的多个语句的映射。

但是,如果 Dapper 不支持 Postgres,我建议只单独发出查询并单独处理它们的结果。

关于asp.net - 在创建 ASP.NET Web 应用程序时将数据库从 SQL Server 更改为 PostgreSQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57024019/

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