Les paramètres Dapper ne fonctionnant pas avec PostgreSQL via la connexion npgsql, le paramétrage de la fonction anonyme postgres est-il pris en charge?

c# dapper npgsql postgresql

Question

J'essaie d'utiliser Dapper pour paramétrer une fonction anonyme postgres que j'ai écrite pour faire un changement. Voici le code:

private static int UpsertProductPrice(
        IDbConnection connection,
        Data.ProductPrice price,
        List<Data.ProductPriceTier> priceTiers)
    {
        string postgres = @"DO $$
        BEGIN 
        UPDATE product_price 
            SET start_date = @StartDate, end_date = @EndDate, price_tier_type = @PriceTierType
            WHERE product_price_external_id = @Id;
        IF found THEN
            RETURN;
        END IF;
        BEGIN
            INSERT INTO product_price(product_price_external_id, start_date, end_date, price_tier_type) 
            VALUES (@Id, @StartDate, @EndDate, @PriceTierType);
            RETURN;
        EXCEPTION WHEN unique_violation THEN END; END$$;";

        int productPriceId = connection.Execute(
            postgres,
            new { Id = price.product_price_external_id, StartDate = price.start_date, EndDate = price.end_date, PriceTierType = price.price_tier_type });

Postgres enregistre la requête comme non paramétrée: il existe toujours des signes @ et aucune valeur n'a été insérée. Voici le journal.

2015-07-15 14:57:58.570 EDT,"user","TestDb",8496,"::1:53953",55a6ad36.2130,1,"DO",2015-07-15 14:57:58 EDT,9/42,0,ERROR,42703,"column ""startdate"" does not exist",,,"UPDATE product_price 

            SET start_date = @StartDate, end_date = @EndDate, price_tier_type = @PriceTierType

            WHERE product_price_external_id = @Id",52,"PL/pgSQL function inline_code_block line 3 at SQL statement","DO $$

        BEGIN 

        UPDATE product_price 

            SET start_date = @StartDate, end_date = @EndDate, price_tier_type = @PriceTierType

            WHERE product_price_external_id = @Id;

        IF found THEN

            RETURN;

        END IF;

        BEGIN

            INSERT INTO product_price(product_price_external_id, start_date, end_date, price_tier_type) 

            VALUES (@Id, @StartDate, @EndDate, @PriceTierType);

            RETURN;

        EXCEPTION WHEN unique_violation THEN END; END$$;",,,""

Je fais quelque chose de mal ou n'est-ce pas supporté? Je n'ai trouvé personne essayant de le faire en ligne.

Réponse acceptée

Les paramètres des blocs de code anonymes ne sont pas pris en charge, ce serait une fonctionnalité PostgreSQL plutôt qu'une fonctionnalité Npgsql. Voir la discussion ici: https://github.com/npgsql/npgsql/issues/629




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi