Sieht aus, als hätte ich es herausgefunden. Stellte sich als einfacher heraus, als ich dachte. Alles, was ich ändern musste, war die Art und Weise, wie die gespeicherte Prozedur von C# aufgerufen wurde.
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;
}
}
Ich bevorzuge die andere Art, die gespeicherte Prozedur aufzurufen, aber zumindest funktioniert das!