Asp.net 从linq调用存储过程
嘿,伙计们, 我有一个名为sp_sitesearch的存储过程,它返回站点搜索的结果,现在我想做的是,我想使用LINQ将这个sp调用到gridview,因为我的一个朋友建议LINQ的性能比DataTable或DataSet快。所以我想尝试一下,所以我创建了一个dbml,并在其中添加了我的SP,以及我在下面编写的.cs代码中添加了SP。Asp.net 从linq调用存储过程,asp.net,linq-to-sql,stored-procedures,Asp.net,Linq To Sql,Stored Procedures,嘿,伙计们, 我有一个名为sp_sitesearch的存储过程,它返回站点搜索的结果,现在我想做的是,我想使用LINQ将这个sp调用到gridview,因为我的一个朋友建议LINQ的性能比DataTable或DataSet快。所以我想尝试一下,所以我创建了一个dbml,并在其中添加了我的SP,以及我在下面编写的.cs代码中添加了SP。 SiteSearchDataContext siteSearch=新建SiteSearchDataContext(); gridArticle.DataSour
SiteSearchDataContext siteSearch=新建SiteSearchDataContext();
gridArticle.DataSource=siteSearch.sp_siteSearch(1,关键字);
gridArticle.DataBind();
在这里,它抛出了一个错误,它应该返回IEnumerable或IDataSource,当我发现它返回int时,我感到震惊。。。但是我不知道怎么做,因为我的sp没有返回任何东西,它只返回一个resultset,所以有人能建议我如何使用它绑定gridview。您不能将IQueryable绑定到数据源。你需要
gridArticle.DataSource = siteSearch.sp_SiteSearch(1, keyword).ToList();
听起来您没有将存储过程映射为实体数据模型中的返回类型。如果返回到数据模型并编辑函数导入,则窗口中应该有一个标记为“Returns a Collection of”的部分,您可以使用该部分来定义存储过程返回的内容。希望它返回的内容可以直接映射到数据模型中的实体类型,因为这将允许您从下拉列表中简单地选择一个实体。如果返回的结果无法清晰地映射到现有实体,请参阅MSDN上的。谢谢您的回复,但我无法在sp_SiteSearch(1,关键字).ToList()之后找到ToList();我认为它默认返回int,所以我必须使用string()选项。不确定为什么您会认为无法绑定到
IQueryable
,它同时实现了IEnumerable
和IEnumerable
@Joel您可能可以绑定到某些IQueryable,但根据我的经验,LINQ到SQL IQueryable无法工作@Abbas如果您得到一个int,那么很可能SQL没有被正确解释。您可以发布实际的SP吗?