user342552
user342552

Reputation:

Stored Procedures and EF Code First

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.

  1. Do I have to use SqlCommand?

  2. What about complex properties, will they be resolved too?

  3. Any other limitations you could tell me about?

Thanks!

Upvotes: 11

Views: 9952

Answers (4)

Mesut Talebi2
Mesut Talebi2

Reputation: 23

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

Upvotes: 0

Tridus
Tridus

Reputation: 5081

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.

Upvotes: 5

Ladislav Mrnka
Ladislav Mrnka

Reputation: 364249

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.

Upvotes: 6

Thomas Li
Thomas Li

Reputation: 3338

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

Upvotes: 0

Related Questions