如何在实体框架中使用存储过程获取数据? [英] How to use stored procedure ot get data in entity framework?
问题描述
假设我有一个存储过程sp_get_myData,我想在实体框架中使用这个sp。我尝试的是:
1.在edmx中创建一个实体以匹配sp_get_myData的resut,说它包括字段ID,名称,代码的myEntity 2.将sp_get_myData添加到edmx
3 。从sp_get_myData导入函数(右键单击sp_get_myData,创建函数导入),将返回类型指定为myEntity
然后我得到错误:
错误5错误11007:实体类型'myEntity '未映射。
但myEntity仅用于保存sp_get_myData的结果,无需将其映射到表。数据库中没有这样的表。
实际上,我有许多用于获取数据的存储过程。我希望结果集可以被视为实体,这样我就可以在客户端对结果应用Linq。
如何解决这个问题?
Suppose I have a stored procedure sp_get_myData, I want to use this sp in entity framework. What I tried is:
1. Create a entity in edmx to match the resut of the sp_get_myData, say it myEntity that includes fields ID, Name, Code
2. Add sp_get_myData to edmx
3. Import function from sp_get_myData(right click on the sp_get_myData, Create a Function Import), assign Return Type as myEntity
then I got error as:
Error 5 Error 11007: Entity type 'myEntity' is not mapped.
But myEntity is only used to hold the result of sp_get_myData, no need to map it to a table. No such table in database.
In fact, I have many stored procedures that are used to get data only. I want to the resultset can be treated as entity, so that I can apply Linq on the results on client side.
How to solve this issue?
推荐答案
据我所知:
您的概念侧实体必须映射到存储模型实体。期。您可以通过以下两种方式之一(可能更多)完成此操作:
建议的解决方案是在数据库中使用与存储过程的结果集匹配的视图或表。然后导入它并将概念实体映射到它。我不太喜欢这种解决方案。
你可以做的另一件事,但更痛苦的是,进入模型的XML并手动创建存储实体。我已经多次这样做了,一旦你理解了XML的组合方式就变得容易了。
换句话说,EF似乎处理好这个问题,但设计师没有设施允许您创建存储模型。
Julia Lerman对此有一些很好的见解。 http://www.thedatafarm.com/blog/
>
这篇关于如何在实体框架中使用存储过程获取数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!