sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo devolver tipos de tablas personalizados de Npgsql y procedimientos almacenados?

Parece que lo descubrí. Resultó ser más fácil de lo que pensaba. Todo lo que necesitaba cambiar era la forma en que se llamaba al procedimiento almacenado desde 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;
    }
}

Preferí la otra forma de invocar el procedimiento almacenado, ¡pero al menos esto funciona!