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.