ADO.NET Ef4-如何在不映射到表的情况下将实体映射到存储过程

时间:2010-07-13 11:45:29

标签: entity-framework entity-framework-4

我们正在使用ado.net实体框架4.0作为我们的数据库层,我是ado.net实体框架的新手。我通过在实体框架中添加实体来创建实体。我想用存储过程映射该实体而不是数据库表。存储过程将返回与实体相同的列。如何在没有映射到表格的情况下如何做到这一点?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

它是不可能的,因为ObjectSet是一个IQueryable并且将ObjectSet映射到存储过程不会给你一个IQueryable,因为它们本质上的存储过程不能被组合。您可以做的最好的事情是获取存储过程中的内容并放入视图并将视图映射到可能的ObjectSet。

答案 2 :(得分:0)

您需要创建复杂类型,而不是实体。打开模型浏览器并将存储过程导入为“函数导入”(您的SP不能使用#tempTables,但您可以使用@tableVariables代替);在函数导入向导中,您将看到“创建复杂类型”按钮。

SP成为模型上下文中的方法,您可以使用它来获取IEnumerable [TheComplexType]。

在EF4.1代码优先,它甚至更简单,你将[ComplexType]属性放在任何类的顶部,你可以使用该类型作为context.ExecuteStoreQuery [T]的返回类型。如果您的属性的名称与返回的列完全相同(并且类型排成一行),则映射是“神奇的” - 它只是起作用。

相关问题