Vraag Een opgeslagen procedure aanroepen met niets om terug te keren met behulp van Entity Framework


Ik begrijp dat dit de manier is waarop we een opgeslagen procedure noemen met behulp van Entity Framework.

context.Database.SqlQuery<myEntityType>(
    "mySpName @param1, @param2, @param3",
    new SqlParameter("param1", param1),
    new SqlParameter("param2", param2),
    new SqlParameter("param3", param3)
);

Maar wat als mijn opgeslagen procedure slechts een paar updateverklaringen heeft en niets retourneert, wat moet ik dan in plaats van plaatsen myEntityType?


12
2018-06-07 18:27


oorsprong


antwoorden:


Jij wil context.Database.ExecuteSqlCommand in plaats van SqlQuery

context.Database.ExecuteSqlCommand(
    "mySpName @param1, @param2, @param3",
    new SqlParameter("param1", param1),
    new SqlParameter("param2", param2),
    new SqlParameter("param3", param3)
);

33
2018-06-07 18:31



Voeg een methode toe aan uw modelbestand voor het aanroepen van een opgeslagen procedure

    public void ExecuteWithStoreProcedure(string query, params object[] parameters)
    {
        context.Database.ExecuteSqlCommand(query, parameters);
    }

als je unitOfwork en repository-patroon hebt gebruikt om mvc-architectuur te bouwen, moet je onderstaande code schrijven om de methode aan te roepen:

public ActionResult ViewDetails()
{
       unitOfWork.ExecuteWithStoreProcedure(
                        "yourspName @param1, @param2,
                        new SqlParameter("param1", 10),
                        new SqlParameter("param2", 20)
                        );   
} 

-2
2017-12-15 11:02