10 Stimmen

Wie verwendet man benutzerdefinierte SQL-Funktionen in .NET?

Ich habe eine skalare Funktion in der DB erstellt

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_GetUserId_Username]
    (
    @Username varchar(32)
    )
RETURNS int
AS
    BEGIN
    DECLARE @UserId int
    SELECT @UserId = UserId FROM [User] WHERE Username = @Username
    RETURN @UserId
    END

Jetzt möchte ich es in meinem .NET C#- oder VB.NET-Code ausführen.

Ich verwende Entity Framework, ich habe versucht, es mit Funktionszuordnung abzubilden und ich hatte keinen Erfolg. Ich kümmere mich nicht, um es mit einfachen DbCommand zu tun, das Problem ist, dass ich keine Ergebnisse erhalten (die Funktion existiert in der Entitäten-Klasse):

public int GetUserIdByUsername(string username)
{
    EntityConnection connection = (EntityConnection)Connection;            
    DbCommand com = connection.StoreConnection.CreateCommand();
    com.CommandText = "fn_GetUserId_Username";
    com.CommandType = CommandType.StoredProcedure;
    com.Parameters.Add(new SqlParameter("Username", username));
    if (com.Connection.State == ConnectionState.Closed) com.Connection.Open();
    try
    {
        var result = com.ExecuteScalar(); //always null
    }
    catch (Exception e)
    { 
    }
    return result;
}

Gibt es eine Lösung? Beiträge in C# oder VB.NET werden gerne entgegengenommen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X