使用实体框架搜索存储过程

时间:2009-10-08 01:07:26

标签: sql entity-framework search stored-procedures view

我想实现一个我见过并使用过的搜索逻辑。它的工作原理如下:

存储过程在实体框架中加载并且在C#中用作方法,它需要参数才能执行搜索。该方法返回视图列表(DB View)。列表中的视图只有一些需要在网格中显示的属性。例如,我通过一些参数搜索用户,结果是用户列表。我没有返回User对象列表,而是使用仅包含将在gird上列出的属性的vUser视图。例如ID,Name和Surname。但仍然数据是正确的,因为存储过程搜索是针对数据库中的表用户完成的。

View也在实体框架中作为C#对象加载。 我正在使用SQL Server 2005。

我如何实现这个?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做。

不幸的是,在EF 3.5中,您需要创建一个EntityType(它只包含您在存储过程中投影的列),以便您可以创建一个公开存储过程结果的FunctionImport

步骤:

  1. 确保在创建模型时(或从数据库刷新模型时)包含存储过程

  2. 创建一个与存储过程返回的形状完全匹配的EntityType

  3. 使用该存储过程创建一个FunctionImport并说它返回您在(2)中创建的EntityType

  4. 在EF 4.0中,您可以跳过步骤(2),因为EF工具会自动执行此过程。

    有关更多背景信息,请参阅此post from Julie

    希望这有帮助

    亚历