Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to use a Stored Procedure with my Entity Framework v4 + POCO's :(

I've got a very simple Entity Framework project with POCO Entities. I've got a single stored procedure which I have imported using the EF Wizard. Kewl.

I've then made my own EF Entity which I've then Add Function Import to map the Stored Procedure to my EF Entity.

Now ... I'm not sure how to map my EF Entity to a POCO. As such, I keep getting the following error:

Error 11007: Entity type 'XXXXX' is not mapped.

I'm not sure how I can map this entity to a POCO. Can anyone help, please?

like image 897
Pure.Krome Avatar asked Aug 02 '10 06:08

Pure.Krome


1 Answers

S'Ok. this is what I ended up doing.

Using POCO's

Ie. the .edmx, Custom Tool is removed / no auto-generated entities, etc.

  1. Import Function :: manually import the stored procedure.

In your context class ...

public class SqlServerContext : ObjectContext, IUnitOfWork
{
    public SqlServerContext(EntityConnection entityConnection, 
                            ILoggingService loggingService)
        : base(entityConnection) { .... }

    public ObjectResult<Location> FindLocationsWithinABoundingBox(decimal upperLeftLongitude,
                                                                  decimal upperLeftLatitude,
                                                                  decimal lowerRightLongitude,
                                                                  decimal lowerRightLatitude)
    {
        return base.ExecuteFunction<Location>("FindLocationsWithinABoundingBox",
                                              new ObjectParameter("UpperLeftLatitude", upperLeftLongitude),
                                              new ObjectParameter("UpperLeftLongitude", upperLeftLatitude),
                                              new ObjectParameter("LowerRightLongitude", lowerRightLongitude),
                                              new ObjectParameter("LowerRightLatitude", lowerRightLatitude));
    }
}

Using the Auto-Generated Entities, etc. (The default way EF is setup)

  1. Create a custom COMPLEX TYPE (which will be used to map the stored procedure, too).
  2. Import Function :: manually import the stored procedure.
  3. Map the RETURN TYPE (of the imported sp) to the custom COMPLEX TYPE you've made.

dat's it.

Not sure if my POCO way is the best way to do things, but it .. well .. works :)

And this is a related StackOverflow question I asked about using this stored procedure in a services / IQueryable way ... :)

like image 95
Pure.Krome Avatar answered Sep 19 '22 03:09

Pure.Krome