首页 > 解决方案 > 如何使用.net core DBFunction将行作为参数传递给Postgres函数

问题描述

使用c#.net核心将pgsql表对象作为参数传递?

嗨,在 pgsql 中我们可以将表行作为参数传递,我想知道我们如何在 .net 核心中使用它?

像下面的函数需要一些参数并给出它的功能

   -CREATE OR REPLACE FUNCTION public."GetUserName"(u "User_", pmed "Pharmacy", puser "Pharmacy", m "Medication")
 RETURNS character varying
 LANGUAGE plpgsql
AS $function$
BEGIN
    return (
        case when u."Id" > 0 then
            (
                u."FirstName" || ' ' ||coalesce(u."LastName", '')
                || (
                    case when u."Pharmacy_Id" > 0 then
                            (case when puser."PharmacyId" > 0 then ' (' || puser."PharmacyName" || ') ' else '' end)
                    else '' end
                )
            )
        when coalesce (u."Id" , 0) = 0 then pmed."PharmacyName" else '' end
    );
END
$function$
;

我想使用 .net core ef core 调用此函数,而无需使用 DbFunctions appraoch 进行动态查询

标签: postgresqlasp.net-corenpgsql

解决方案


与其尝试将整行作为参数传递给函数(通常效率不高),不如尝试传递该行的主键。然后,您的函数可以像往常一样对该行执行任何查询或更新。

通常,在关系数据库中,行不作为您传递或操作的实体存在(尽管 PostgreSQL 确实具有对复合类型的第一类支持,也支持表)。


推荐阅读