Pages

Tuesday, December 27, 2011

How to use Stored Procedures in Entity Framework

In the current project we are using Entity Framework for database operations. Entity Framework comes with Visual Studio SP1, which helps you to map tables / views / procedures as entities in C# / VB Code. You can find more details about EF from here : http://msdn.microsoft.com/en-us/library/bb399572.aspx. In this post I am explaining how to use Stored Procedures in Entity Framework.
  1. Add the Stored Procedure to the Entity Model Designer using Update Model From Database Option.
  2. Add Procedure
    Add Procedure
  3. If you are added successfully, you can get the procedure in Model Browser.
  4. Model Browser
    Model Browser
  5. Right click on the Procedure name and select Create Function Import.
  6. Create Function Import
    Create Function Import
  7. It will popups a Windows with Stored Procedure Name, Function Import Name and Return Type. If the procedure returns nothing, you can choose none. If the procedure is returns single value, like UserId, Number Of Rows etc, then you can choose scalar option, where you need to specify the return type. And if the procedure is returns Table or Number of Rows, you need to choose the last option Entities, which will allow to select entities created in the Model as the Output. Sometimes we need to create a View in the DB and need to import it in the Model, so that we can use the View as the return type entity. Select the appropriate return type and click Ok. You can use this in code. In this code I am using a View to return the selected users.
Add Function Import dialog
Add Function Import dialog
using (SampleEntities context = new SampleEntities())
{
/*
* Thanks to Barry Soetoro.
* I was not calling the GetAllUsers function.
List Users = null;
Users = (from user in context.Users
             select user).ToList();
this.dataGridView1.DataSource = Users;
*/
//Updated Version.
IEnumerable userview = context.GetAllUsers();
this.dataGridView1.DataSource = userview;
}
This will display list of Users in the DataGridView.

No comments: