Solved

Mapping CRUD SPs to Entity Framework table objects

Posted on 2014-02-26
2
1,023 Views
Last Modified: 2014-03-13
I am using CRUD stored procedures toa carry out changes to my data.  I see how you are supposed to map the parameters to the EF table's fields.  My question comes because I have an extra field in the Stored Procedure that does not map to the table reflecting the userRecID of the person making the change.  (That is because this has to be stored in a tracking table in the database.)

However, when I tried to set the mapping I would get errors because there was not a one to one correspondence between the parameters and the columns.  

In this MSDN article ¿http://msdn.microsoft.com/en-us/data/gg699321.aspx in the section entitled "Mapping Modification Stored Procedures to Entities"

it states:

Now you’ll modify the model so that the Entity Framework will use the UpdateOrder stored procedure defined in the database instead of generating its own command. You’ll do this by mapping the UpdateOrder stored procedure to the Order entity in the designer. This is referred to as Stored Procedure Mapping or Function Mapping.

1.In the designer, right click on the Order entity and select Stored Procedure mapping.
2.Click select Function="" Insert="" and then click the drop down arrow that appears. This exposes the list of all Functions found in the Store metadata.
3.Select InsertOrder from the list. The designer will do its best job of matching the stored procedure’s parameters with the entity properties using the names. In this case, since all of the property names match the parameter names, it maps every one correctly so you don’t need to make any changes. One thing that the designer was not able to map is the newly generated SalesOrderID returned by the stored procedure. This is because the designer is not able to automatically detect the name of the field being returned.
4.Under the Result Column Bindings section, click add Binding="" Result="" and enter SalesOrderID. The designer should automatically select the entity key property, OrderID, for this final mapping.
When completed, Figure 6 displays what the mapping should look like.

However when I follow this process because my stored procedure contains an extra parameter I get the error, "Error 2037: A mapping function bindings specifies a function VFS_ProcurementTrackModel.Store.prc_ext_Requirement_Insert but does not map the following function parameters: UserRecID."

This has me stymied in attempting to "map" the prc_ext_Requirement_Insert stored procedure to the prc_Requirements Entity.

How do I get around this?
0
Comment
Question by:Edward Joell
  • 2
2 Comments
 

Accepted Solution

by:
Edward Joell earned 0 total points
ID: 39926896
After extensive discussion on www.Asp.Net it was developed that the answer is "you can't get there from here".

So I will instead have to import my stored procedures as functions and call them to carry out my update activities.  I have to build my own custom objects to implement these crud calls.  I will only be able to use EF only as a means of build models of my tables and nothing else.  I would be able to use any of the EF objects' savechanges methods or if changed properties.
0
 

Author Closing Comment

by:Edward Joell
ID: 39926899
Essentially I am making the best of a bad deal.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now