实体框架显式加载示例

Ahm*_*zel 3 explicit entity-framework-4

我在"northwind"数据库上尝试这部分代码.但是我收到了DataBind错误

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            GetSpecificCustomer();
        }
    }

    private void GetSpecificCustomer()
    {
        using (var ctx = new northwindContext())
        {
            var query = ctx.Customers.Include("CustomerID").Take(3);

            grdEmployees.DataSource = query;
            grdEmployees.DataBind(); =>NotSupportedException was unhandled by user code(Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().)

        }
    }
Run Code Online (Sandbox Code Playgroud)

nem*_*esv 6

该例外包含您需要执行的操作:

...而是使用数据填充DbSet ...

所以你需要评估查询.例外情况提到了Load方法,但是因为您无论如何都需要在本地存储结果,最简单的解决方案是ToArray()在分配时调用查询grdEmployees.DataSource.

var query = ctx.Customers.Include("CustomerID").Take(3);
grdEmployees.DataSource = query.ToArray();
grdEmployees.DataBind();
Run Code Online (Sandbox Code Playgroud)

ToArray方法将执行查询,返回数组中的结果集.