Showing posts with label SQL Server. Show all posts
Showing posts with label SQL Server. Show all posts

Monday, April 14, 2014

Using stored procedures in Entity Framework Model First Approach (Part II - Updating an existing Stored procedure)

I have already explained how to add a new stored procedure to Entity Framework, now in this article I will explain if any changes made to a stored procedure in database then how can we go for updating it in Entity Framework so that the changes will reflect in the result. (changes include adding or removing the columns in stored procedure mainly)

Lets take the same stored procedure which we already added in the first part of this article named as 'GetAllPersons' which was having only 4 columns previously like ID, Name, Age, DOB and now i want to add a new column named as 'Department' which should also reflect in the result set.

Here are the below steps we may follow to get this work as expected. 

STEP I(Refresh the Model to get the new column added in the Person table in database):



STEP II(Refresh the model to get the new column returned by the stored procedure):



STEP III(Go for the EDIT mode of the Function import already in use):



STEP IV(Update the Function Import to get the new column):
           i) Click on the button 'Get Column Information' to get the information for the new               column added in stored procedure. 
           ii) Click on 'Update' button to update the Complex Type to add the new attribute.
           iii) Click on 'OK' button to apply and save the changes.



STEP V(Run the custom tool for reflect the changes in model classes):




Hope this will be helpful for them who are already started with using Entity Framework and just looking for a guide in using stored procedure in Entity Framework.

Using stored procedures in Entity Framework Model First Approach (Part I - Adding New Stored procedure)

Before starting with this article I will expect that you have a basic idea on the Entity Framework - Model First approach and its use.

Here I am explaining the step by step approach how to use a newly created stored procedure in our C# code through the EntiFramework. Let say we have created a new procedure named as 'GetAllPersons', now we can follow the below steps :-

STEP I (Open EDMX file right click and choose the option 'Update Model from Database...') :



STEP II (Now in this below screen choose save entity connection string in Web.Config as the name given at the time of creation. Then click on NEXT.) : 


STEP III (Select 'Add' tab and there select the particular stored procedure you want to add to entity model) :

Unselect the option 'Pluralize or singularize object names' and click on FINISH button.


STEP IV(Rename the Entity added automatically.) :

Open the Model Browser now and we can see the 3 things added automatically in entity model like :-
StoredProcedure - The procedure we added recently.
Function Import - Function which actually will be called in code by the object of the entity context.
ComplexType - The entity returned by the SP or the Function generated.

These Function and ComplexType can be renamed as we want them.

Rename the ComplexType name as our feasibility :-



STEP V(Edit the Function Import as per requirement):

Open the function import in EDIT mode.

Rename the function and select appropriate Stored Procedure and ComplexType.
 After editing done :-
STEP VI(Finish & Run Custom Tool):

Now after all the changes are being done to make the latest change available in code we have to run the custom tool as mentioned in below image. This step is to update the classes from the model to avail latest changes made to it in code behind.

For more information on this custom tool and tt files please refer to the description here.

STEP VII(Get result in code file) :

To get the list of all the Persons as returned by the function imported :-

Create the object of the Entity context class,
Test_SPEntities objTestSPEntity = new Test_SPEntities();

Call the function and get the result as list of the particular Complex Type,
List<GetAllPersonsEntity> listAllPersons = objTestSPEntity.GetAllPersons().ToList();


Hope this will be definitely of help for the guys who just started with basics of the Entity Framework.