从linq调用存储过程

时间:2011-05-09 19:24:33

标签: asp.net linq-to-sql stored-procedures

嘿伙计们, 我有一个称为sp_sitesearch的存储过程,它返回网站搜索的结果,现在我要做的是,我想用LINQ将这个sp称为gridview,因为我的朋友之一建议linq的性能比DataTable快或DataSet。所以我想尝试一下,所以我创建了一个dbml,并在其中添加了我的SP,并在.cs中我写下了代码。
SiteSearchDataContext siteSearch = new SiteSearchDataContext(); gridArticle.DataSource = siteSearch.sp_SiteSearch(1, keyword); gridArticle.DataBind();

这里抛出一个错误说,它应该返回IEnumerable或IDataSource,当我发现它返回int时我感到震惊...但我不知道如何,因为我的sp没有返回任何东西,它只返回一个结果集,所以任何人都可以建议我如何使用它来绑定gridview。

2 个答案:

答案 0 :(得分:1)

听起来您没有映射存储过程以在实体数据模型中具有返回类型。如果您返回到数据模型并编辑功能导入,则应该有一个标记为“返回集合”的窗口部分,您可以使用该部分来定义存储过程返回的内容。希望它返回的内容可以直接映射到数据模型中的实体类型,因为这样您只需从下拉列表中选择一个实体。如果您的结果以不能完全映射到现有实体的方式返回,请参阅MSDN上的How to: Map a Function Import to a Complex Type (Entity Data Model Tools)

答案 1 :(得分:0)

您无法将IQueryable绑定到DataSource。你需要

gridArticle.DataSource = siteSearch.sp_SiteSearch(1, keyword).ToList();