मैं डीबी.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
अब मैं अंदर मेरी नेट C# या VB.NET कोड उसे चलाना चाहते हैं में एक अदिश समारोह बनाया।
मैं इकाई फ्रेमवर्क का उपयोग करता हूं, मैंने इसे फ़ंक्शन मैपिंग के साथ मैप करने की कोशिश की और मुझे सफलता नहीं मिली।
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;
}
कोई समाधान है: मैं सरल DbCommand साथ यह करने के लिए परवाह नहीं है, समस्या मैं यह है कि कोई परिणाम (समारोह संस्थाओं कक्षा में मौजूद है) है? सी # या वीबी.नेट में पोस्ट का स्वागत किया जाएगा।
परिणाम: SqlException: 'fn_GetUserId_Username' किसी मान्यता प्राप्त समारोह नाम नहीं है। – Shimmy
@Shimmy: मालिक का नाम निर्दिष्ट करें, "dbo" -> "dbo.fn_GetUserId_Username (@Username) चुनें" – Sung
यह काम करता है, धन्यवाद! – Shimmy