1
Je suis en train de le code factoriser utiliser dbContext.Database.ExecuteSqlCommandAsync
au lieu de SqlCommand
Exec procédure stockée avec le paramètre de sortie dans Entity Framework Core 2
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@certificateTypeId", "TA"));
parameters.Add(new SqlParameter("@personId", 1m));
parameters.Add(new SqlParameter("@selfAssessment", xDocument.ToString()));
parameters.Add(new SqlParameter("@selfAssessmentVersion", 1m));
parameters.Add(new SqlParameter("@sponsorPersonId", 1m));
var outputParam = new SqlParameter("@certificationEventId", SqlDbType.Decimal, 10);
outputParam.Direction = ParameterDirection.Output;
parameters.Add(outputParam);
string sql = "[My Stored Proc] " + string.Join(" ", parameters.Select(ToEfString).ToArray());
// runtime value: [My Stored Proc] @certificateTypeId @personId @selfAssessment @selfAssessmentVersion @sponsorPersonId @certificationEventId OUT
var result = await dbContext.Database.ExecuteSqlCommandAsync(sql, parameters);
return ((SqlDecimal)outputParam.SqlValue).Value;
Je reçois cette erreur:
SqlException: Incorrect syntax near @personId
Quel est le problème ?
Essayez d'ajouter une virgule est entre: '[Mon stocké Proc] @certificateTypeId, @personId, @ ...' –
Pouvez-vous préciser la procédure stockée les noms de paramètres explicitement dans l'appel sql? –
@BernardVanderBeken: Je ne suis pas sûr de ce que vous voulez dire – Liero