简体   繁体   中英

How to use Entity Framework with Stored procedures and POCOs

I am trying here to use Entity Framework with Stored procedures and POCOS and 2 different projects.

I have one project DataAccess (for my edmx and DataContexts) and one project BusinessEntities (for my POCOs).
DataAccess have a reference of BusinessEntities.

In my DB I have a pretty standard SP :

CREATE STORED PROCEDURE GetHeader
    @id CHAR(35)
AS
BEGIN
    SELECT ID, Name FROM mytable WHERE ID = @id
END

The datacontext is :

public class DbContext : ObjectContext
{
public ObjectResult<BusinessEntities.GetHeaderResult> GetHeader(string id)
{
return base.ExecuteFunction<BusinessEntities.GetHeaderResult>("GetHeader", new ObjectParameter("id", id));
}
}

If I only go like this (the EDMX has been updated with the SP but the function has not been imported) I have this error :

System.InvalidOperationException: The FunctionImport &#39;GetHeader&#39; could not be found in the container &#39;DbEntities&#39;.

If I import the function correctly I have this error :

System.InvalidOperationException: The type parameter 'BusinessEntites.GetHeaderResult' in ExecuteFunction is incompatible with the type 'DbModel.GetHeaderResult' returned by the function.

I guess that it is only just a simple setting that is missing here but I can't seem to grab it.

Please not that the EDMX file has the correct setting (CodeGenerationStrategy set to none, CustomTool is empty)

In the first case you are calling wrong method on the context. ExecuteFunction is only for function imports. Use ExecuteStoreQuery and SqlParameter instead. In the second case function import also creates a complex type in your EDMX and EF expects you will use that complex type as a result of function import call.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM