小编dev*_*309的帖子

Dapper 可以将用户定义的复合类型传递给 PostgreSQL 函数吗?

我试图弄清楚如何使用 Dapper 将用户定义的复合类型传递给 PostgreSQL 函数。我知道这在 SQL Server 上是可能的,而且我已经有了使用 Dapper+SQL Server 的工作示例,但是,我对如何使用 PostgreSQL 做同样的事情很不了解。

从我读过的一些内容来看,我不确定 Dapper+PostgreSQL 是否可行,但我知道它确实适用于普通的 Npgsql(我也有一个工作示例)。

那么,如何使用 Dapper 调用接受用户定义复合类型的 PostgreSQL 函数?

示例用户定义的复合类型

CREATE TYPE hero AS (
    first_name text,
    last_name text
);
Run Code Online (Sandbox Code Playgroud)

接受用户定义的复合类型的示例 PostgreSQL 函数

CREATE OR REPLACE FUNCTION testfuncthattakesinudt(our_hero hero)
    RETURNS SETOF characters 
    LANGUAGE 'sql'

    STABLE
    ROWS 1000
AS $BODY$

    SELECT  *
    FROM    characters
    WHERE   first_name = COALESCE(our_hero.first_name, '')
    AND     last_name = COALESCE(our_hero.last_name, '');

$BODY$;
Run Code Online (Sandbox Code Playgroud)

理论 C# 示例

[Test]
public void UsingDapper_Query_CallFunctionThatTakesInUserDefinedCompositeType_FunctionUsesUserDefinedCompositeType()
{
    // Arrange
    using (var …
Run Code Online (Sandbox Code Playgroud)

c# postgresql dapper

5
推荐指数
1
解决办法
1629
查看次数

如何使用 Dapper 将 JSON 作为原始 PostgreSQL 类型传递给函数?

我有一个 PostgreSQL 函数,它接受一个类型为 的参数json。使用 Dapper,我如何执行将对象传递给 PostgreSQL 函数的调用,以便 PostgreSQL 将类型识别为 asjson而不是 as text

接受 json 类型的 PostgreSQL 函数示例

CREATE OR REPLACE FUNCTION testfuncthattakesinjson(heroes json)
    RETURNS SETOF characters 
    LANGUAGE 'sql'

    STABLE
    ROWS 100
AS $BODY$

    SELECT  c.*
    FROM    characters c
    JOIN    json_array_elements(heroes) j
    ON      c.first_name = j->>'first_name'
    AND     c.last_name = j->>'last_name';

$BODY$;
Run Code Online (Sandbox Code Playgroud)

破碎的示例 C# 集成测试

[Test]
public void Query_CallFunctionThatTakesInJsonParameter_FunctionUsesJsonType()
{
    using (var conn = new NpgsqlConnection(Db.GetConnectionStringToDatabase()))
    {
        var funcName = "testfuncthattakesinjson";
        var expect = CharacterTestData.Where(character => character.id …
Run Code Online (Sandbox Code Playgroud)

c# postgresql dapper

4
推荐指数
1
解决办法
2538
查看次数

标签 统计

c# ×2

dapper ×2

postgresql ×2