开发者

stored procedure mapping Entity Framework

开发者 https://www.devze.com 2023-01-06 00:59 出处:网络
We\'re using a Function Import in an EF4 model to populate an existing entity in our Model.The entity in the model has a Key field of Id which we\'re struggling to map as our stored procedure doesn\'t

We're using a Function Import in an EF4 model to populate an existing entity in our Model. The entity in the model has a Key field of Id which we're struggling to map as our stored procedure doesn't return an Id field. I've tried setting the value in the mapping to a literal value of 0 but that fails with an Entit开发者_高级运维yCommandExecutionException and the following exception text.

The data reader is incompatible with the specified 'Candidate'. A member of the type, 'Id', does not have a corresponding column in the data reader with the same name.

Short of modifying the stored procedure to return a dummy Id field can anyone recommend what the best approach is for this as the dummy field option feels very clunky to me.

Many Thanks


If you can't return enough data to fully materialize the entity -- and the Id field is certainly going to be required for that -- then you need to change the return type on the proc to be a complex type instead of an entity.


Use another POCO class with the same structure to receive the results of the stored procedure call, here's an example:

string sp = string.Format("EXEC dbo.spComercialesAsociadosActivos {0}", idComercialPrincipal);
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<InfoComercial>(sp);

In this case "InfoComercial" is a POCO class with the same structure as "Comercial", which is tied up to EF code first in the DBContext, then I used this independent class in the viewModel to create a disconnected "Comercial", it's not an ideal solution but will work fine until EF 5 comes with SP support.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号