0
bvz created
What is the best way that you would recoment calling stored procedures through the EntityFramework provider?
Currently I have added the following to the DbContext file:
public virtual int? spr_AddUser(Nullable<int> clientID, string username, string password, string name, string surname, string iDNumber, string email, Nullable<int> createdBy)
{
var clientIdPar = new SqlParameter("@ClientID", clientID);
var usernamePar = new SqlParameter("Username", username);
var passwordPar = new SqlParameter("Password", password);
var namePar = new SqlParameter("Name", name);
var surnamePar = new SqlParameter("Surname", surname);
var idNumberPar = new SqlParameter("IDNumber", iDNumber);
var emailPar = new SqlParameter("Email", email);
var createdByPar = new SqlParameter("CreatedBy", createdBy);
var retvalPar = new SqlParameter("@retval", SqlDbType.Int);
retvalPar.Direction = ParameterDirection.Output;
var parameters = new object[] { clientIdPar, usernamePar, passwordPar, namePar, surnamePar, idNumberPar, emailPar, createdByPar, retvalPar };
this.Database.ExecuteSqlCommand(
"exec @retval = spr_AddUser @ClientID,@UserName,@Password,@Name,@Surname,@IDNumber,@Email,@CreatedBy",
parameters);
return (int) retvalPar.Value;
}
This works,but I am not sure if this is the best way to call stored procedures when using ABP.
Could someone who is more experienced with ABP point me in the right direction?
1 Answer(s)
-
0
Create a custom repository method (<a class="postlink" href="http://www.aspnetboilerplate.com/Pages/Documents/EntityFramework-Integration#DocCustomRepositoryMethods">http://www.aspnetboilerplate.com/Pages/ ... oryMethods</a>) and call SP there. Then inject the repository and call the method wherever you need. Don't add method to DbContext since you can not inject DbContext in application layer.