Meine gespeicherte Prozedur gibt nur eine string
. ZB: Diese gespeicherte Prozedur gibt "en-US"
CREATE PROCEDURE [dbo].[P_GetStringConfig](
@iCode CHAR(20))
AS
BEGIN
SET NOCOUNT ON
SELECT Value
FROM T_SReq_Config WITH (NOLOCK)
WHERE Code = @iCode
IF @@ERROR <> 0
RETURN @@ERROR
RETURN 0
END
Ich benutze Dapper
wie Dapper
:
using (var connection = new SqlConnection(GetConnectionString()))
{
var result = connection.Query<ModelClass>(
"P_GetStringConfig",
new {@iCode = "MCode"},
commandType: CommandType.StoredProcedure).First();
}
Wo ist meine ModelClass
class ModelClass
{
string result {get;set;}
}
Aber null
.
Irgendwelche Ideen, was fehlt mir hier? (oder gibt es eine andere Methode, um das zu nennen?)
Wahrscheinlich sollte Ihr Eigenschaftsergebnis als das vom SP (Wert) zurückgegebene Feld benannt werden, aber dies erzeugt einen Konflikt mit einem reservierten Schlüsselwort
Ändern Sie daher den SP, um das als Eigenschaft Ihres Modells zurückgegebene Feld umzubenennen
CREATE PROCEDURE [dbo].[P_GetStringConfig](
@iCode CHAR(20))
AS
BEGIN
SET NOCOUNT ON
SELECT Value AS result
FROM T_SReq_Config WITH (NOLOCK)
WHERE Code = @iCode
IF @@ERROR <> 0
RETURN @@ERROR
RETURN 0
END
Außerdem schlage ich vor, den Code zu ändern, um FirstOrDefault zu verwenden, falls Ihr SP nichts findet, wird Ihr Code eine Ausnahme auslösen
var result = connection.Query<ModelClass>("P_GetStringConfig",
new {@iCode = "MCode"},
commandType:CommandType.StoredProcedure)
.FirstOrDefault();