Stored Procedures and EF Code First

前端 未结 4 1922
谎友^
谎友^ 2021-02-14 02:23

I would like to use a stored procedure to retrieve entities from a DB, I don\'t care about tracking changes. I just need all entities be resolved including related ones.

<
相关标签:
4条回答
  • 2021-02-14 02:39

    Try function import: http://msdn.microsoft.com/en-us/library/dd456824.aspx

    0 讨论(0)
  • 2021-02-14 02:39

    By Looking at database first approach, in auto generated context class it defines stored procedures as a virtual functions, Here I share a function from my project, this stored procedure returns a complex type of question.

    public virtual ObjectResult<Question> GetMyInnerQuestions(Nullable<int> id)
            {
                var idParameter = id.HasValue ?
                    new ObjectParameter("Id", id) :
                    new ObjectParameter("Id", typeof(int));
    
                return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Question>("GetMyInnerQuestions", idParameter);
            }
    

    I used this in my code first do I can call stored procedures like functions as:

    IQueryable<Question> questions = db.GetMyInnerQuestions(id).AsQueryable();
    

    Hope this help

    0 讨论(0)
  • 2021-02-14 02:45

    Stored Procedures are not supported in Code First. So yes, you'll have to use SqlCommand or whatever your DB of choice provides if you intend on using Code First.

    Stored Procedures ARE supported in DB First or Model First.

    0 讨论(0)
  • 2021-02-14 02:47

    General answer about using stored procedures in EF is here so stored procedure in pure EF will not handle navigation properties. The answer also mentioned EFExtensions but that is not available in DbContext API.

    To execute stored procedure in DbContext API use:

    var entities = context.Database.SqlQuery<MyEntity>(...);
    

    DbContext API doesn't offer any function import like EDMX and ObjectContext API.

    0 讨论(0)
提交回复
热议问题