使用EF5绑定到数据网格视图问题

本文关键字:网格 视图 问题 数据网 数据 EF5 绑定 使用 | 更新日期: 2023-09-27 18:24:51

我是EF的新手,目前正在使用EF5尝试将视图中的数据绑定到WinForms应用程序中的数据网格视图。我不知道如何正确地做到这一点,我得到了一个错误:

不支持直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)的数据。相反,使用数据填充DbSet,例如通过调用DbSet上的Load,然后绑定到本地数据。对于WPF绑定到DbSet.Local。对于WinForms绑定到DbSet.Local.ToBindingList()。

这是我的代码:

using (MyEntities context = new MyEntities ())
        {
            var qry = from col in context.vwSystemProperties
                      select new
                          {
                              SystemPropertyName = col.SystemPropertyName,
                              SystemPropertyEnumVal = col.SystemPropertyEnumVal,
                              SystemPropertyValue = col.SystemPropertyValue,
                              ApplicationScope = col.ApplicationScope,
                              CategoryScope = col.CategoryScope,
                              EntityScope = col.EntityScope,
                              VersionDate = col.VersionDate,
                              VersionUser = col.VersionUser
                          };

            BindingSource bs = new BindingSource();
            bs.DataSource = qry;
            SystemPropertyDGV.DataSource = bs;
        }

我想我还没有完全理解这个错误指示我做什么。我做了一些简短的搜索,但我认为我没有找到我需要的东西。DbSet应该如何实现和用于将数据绑定到DGV,或者有更简单的方法吗?

可以为我提供一些关于如何将qry对象正确绑定到数据网格视图的见解吗?现在我只需要查看数据,但今后我希望能够访问一行并根据ID进行更新。

感谢

使用EF5绑定到数据网格视图问题

只需对返回的查询使用ToList()方法。

尝试以下操作:

using (MyEntities context = new MyEntities ())
{
    var qry = from col in context.vwSystemProperties
              select new
                  {
                      SystemPropertyName = col.SystemPropertyName,
                      SystemPropertyEnumVal = col.SystemPropertyEnumVal,
                      SystemPropertyValue = col.SystemPropertyValue,
                      ApplicationScope = col.ApplicationScope,
                      CategoryScope = col.CategoryScope,
                      EntityScope = col.EntityScope,
                      VersionDate = col.VersionDate,
                      VersionUser = col.VersionUser
                  };

    BindingSource bs = new BindingSource();
    bs.DataSource = qry.ToList();
    SystemPropertyDGV.DataSource = bs;
}