Tôi tạo ra một hàm vô hướng trong DBLàm thế nào để sử dụng các hàm do người dùng SQL định nghĩa trong .NET?
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
Bây giờ tôi muốn chạy nó trong .NET C# hoặc mã VB.NET.
Tôi sử dụng Khung thực thể, tôi đã cố gắng ánh xạ nó với ánh xạ hàm và tôi đã không thành công. tôi không quan tâm để làm điều đó với DbCommand đơn giản, vấn đề là tôi không nhận được kết quả (chức năng tồn tại trong lớp Entities):
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ó giải pháp nào? Các bài đăng trong C# hoặc VB.NET sẽ được chào đón.
Kết quả: SqlException: 'fn_GetUserId_Username' không phải là tên hàm được công nhận. – Shimmy
@Shimmy: chỉ định tên chủ sở hữu, "dbo" -> "chọn dbo.fn_GetUserId_Username (@Username)" – Sung
Điều đó có hiệu quả, cảm ơn! – Shimmy