PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come restituire tipi di tabelle personalizzate da Npgsql e stored procedure?

Sembra che l'ho capito. Si è rivelato più facile di quanto pensassi. Tutto ciò che dovevo modificare era il modo in cui la stored procedure veniva chiamata da C#.

ApplicationUser user;
using (NpgsqlConnection db = new NpgsqlConnection(this.connectionString))
{
    db.Open();
    using (NpgsqlCommand cmd = new NpgsqlCommand("SELECT find_by_id(@user_id);", db))
    {
        cmd.Parameters.AddWithValue("user_id", userId);
        object result = cmd.ExecuteScalar();
        user = result == DBNull.Value ? null : (ApplicationUser)result;
    }
}

Ho preferito l'altro modo di invocare la stored procedure, ma almeno questo funziona!