Det ser ud til, at jeg fandt ud af det. Det viste sig at være lettere, end jeg troede. Det eneste, jeg skulle ændre, var den måde, den lagrede procedure blev kaldt fra 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;
}
}
Jeg foretrak den anden måde at kalde den lagrede procedure på, men det virker i det mindste!