Ich habe eine skalare Funktion im DBWie SQL benutzerdefinierte Funktionen in .NET zu verwenden?
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 meiner .NET C# oder VB.NET-Code auszuführen.
Ich benutze Entity Framework, ich habe versucht, es mit Funktionszuordnung zuordnen, und ich habe keinen Erfolg. i do not care es mit einfachen DbCommand zu tun, ist das Problem, dass ich keine Ergebnisse erhalten (die Funktion in der Entities Klasse vorhanden ist):
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 willkommen sein.
Ergebnis: SqlException: 'fn_GetUserId_Username' ist keine anerkannte Funktionsnamen. – Shimmy
@Shimmy: Geben Sie den Namen des Besitzers ein, "dbo" -> "Wählen Sie dbo.fn_GetUserId_Username (@Username)" – Sung
Das hat funktioniert, danke! – Shimmy