私は今、私は私の.NET C#またはVB.NETのコード内でそれを実行したいDB.NETでSQLユーザー定義関数を使用する方法は?
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
でスカラー関数を作成しました。
私はEntity Frameworkを使用していますが、これを関数マッピングでマップしようとしましたが、成功しませんでした。 は、私はシンプルされたDbCommandでそれを行うには気にしない、問題は、私は何の結果(関数は、エンティティクラスに存在する)を取得しないことです:
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;
}
を任意の解決策はありますか? C#またはVB.NETの投稿は歓迎されます。
結果: SqlExceptionが: 'fn_GetUserId_Usernameは' が認識関数名ではありません。 – Shimmy
@Shimmy:所有者名 "dbo"を指定 - > "dbo.fn_GetUserId_Username(@ユーザー名)を選択" – Sung
それは、ありがとう! – Shimmy