【问题标题】:Error with Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery, DbRawSqlQuery) is not supported不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery、DbRawSqlQuery)时出错
【发布时间】:2017-09-06 07:36:29
【问题描述】:

我有以下代码来为我的 Asp.net gridview 填充数据。我在其他 asp.net 页面中使用与以下相同的代码将数据加载到 gridview。所有其他页面都可以使用代码并成功显示带有数据的gridview。但是在一个页面中,显示客户购买的产品列表,它显示错误。 这是我的代码。

using (DataContext.DBEntities ctx = new DataContext.DBEntities())
{
List<DataContext.vwClientAndProduct> product = new List<DataContext.vwClientAndProduct>();
product = ctx.SP_ClientAndProduct_Select().ToList<DataContext.vwClientAndProduct>();
gvList.DataSource = product.ToList();
gvList.DataBind();
}

我跟踪了错误页面的代码,它成功通过了gvList.DataBind()方法。但是当我继续 F5 时,我的 product.aspx 页面中显示错误消息。错误以“不支持直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery、DbRawSqlQuery)的数据......”开始。

以下每一项都不起作用。

var product = (from row in ctx.SP_ClientAndProduct_Select()
                              select row).ToList();

//var product = from row in ctx.SP_ClientAndProduct_Select()
                              select row;
//var product = ctx.SP_ClientAndProduct_Select().ToList();                   

gvList.DataSource = product.ToList();
gvList.DataBind();

另一个页面与以下内容很好地配合。

using (DataContext.DBEntities ctx = new DataContext.DBEntities ())
            {
var product = ctx.SP_Product_Select().ToList()
                gvList.DataSource = product.ToList();
                gvList.DataBind();
            }

虽然代码相同,但我不知道为什么这不起作用。

请帮忙。 谢谢

【问题讨论】:

  • 为什么在第一个输入DataContext.vwClientAndProduct,而第二个不用?我认为DataContext 是这里的罪魁祸首,因为它与EF 的上下文有关,并且在绑定到GridView 的DataSource 属性时,该上下文不能用作List 的类型参数。
  • 但是为什么它可以在其他页面中工作对我来说很奇怪。

标签: asp.net entity-framework data-binding


【解决方案1】:

成功了!

我创建了一个新的 aspx 页面并将所有代码从错误页面复制到新页面。

当新页面加载时,gridview 会显示数据。

很奇怪!

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多