我想实现一个我见过并使用过的搜索逻辑。它的工作原理如下:
存储过程在实体框架中加载并且在C#中用作方法,它需要参数才能执行搜索。该方法返回视图列表(DB View)。列表中的视图只有一些需要在网格中显示的属性。例如,我通过一些参数搜索用户,结果是用户列表。我没有返回User对象列表,而是使用仅包含将在gird上列出的属性的vUser视图。例如ID,Name和Surname。但仍然数据是正确的,因为存储过程搜索是针对数据库中的表用户完成的。
View也在实体框架中作为C#对象加载。 我正在使用SQL Server 2005。
我如何实现这个?
非常感谢你。答案 0 :(得分:1)
是的,你可以这样做。
不幸的是,在EF 3.5中,您需要创建一个EntityType
(它只包含您在存储过程中投影的列),以便您可以创建一个公开存储过程结果的FunctionImport
。
步骤:
确保在创建模型时(或从数据库刷新模型时)包含存储过程
创建一个与存储过程返回的形状完全匹配的EntityType
使用该存储过程创建一个FunctionImport
并说它返回您在(2)中创建的EntityType
在EF 4.0中,您可以跳过步骤(2),因为EF工具会自动执行此过程。
有关更多背景信息,请参阅此post from Julie
希望这有帮助
亚历