Stored procedure in Entity Framework database first approach

How to map a stored procedure in EF?

Since you are doing Database First Approach and you have an EDMX file, let EF generate the class of the stored procedure result for you. You may have many stored procedures and you want to avoid creating the classes manually: After all that is the whole point of using an ORM tool. Also some of your stored procedures may have parameters. Doing it the way below will handle all that for you. It is actually pretty simple.

To get EF to do this for you, follow the steps to below:

  1. Double click your EDMX file
  2. Choose Update Model from Database

You will see the dialog similar to below:

enter image description here

  1. Make sure you have checked the boxes as shown.

That will add the stored procedure and you will see it in your model browser as shown below:

enter image description here

  1. If you want to change the class name auto-generated by EF then do so. I strongly suggest you do this and give your class a meaningful names that follow .NET naming conventions. The convention I follow is remove any verbs from the stored procedure name and append the word result to the end. So you will end up with name as shown below:

enter image description here

  1. Press OK

Some Notes

This is much better than writing the classes manually in case your stored procedure name, or the parameters it needs, or the result it returns changes. This approach will work for user defined functions as well.

A Gotcha

There will be times when the stored procedure will not appear in the selection in the wizard dialog, that is because of this. Simply add this to the beginning of your stored procedure:

SET FMTONLY OFF -- REMEMBER to remove it once the wizard is done.