【问题标题】:Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery, DbRawSqlQuery) is not supported. Load not there不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery、DbRawSqlQuery)。加载不存在
【发布时间】:2014-09-10 20:18:35
【问题描述】:

我正在使用 EF,并且我有以下代码,我试图从名为 interface5toSSHIP 的视图中获取行。 SQL Explorer 显示数据库视图现在只有一行。以下查询似乎没有返回它。我做错了什么?

IEnumerable<interface5toSSHIP> i5;
            using (RREM_GilbaneEntities3 entities3 = new RREM_GilbaneEntities3())
            {
                i5 = from i in entities3.interface5toSSHIP
                select i;
            }

然后当我尝试 DataBind 时出现标题错误:

grdvwInterface5ReadyToSend.DataSource = i5;
            grdvwInterface5ReadyToSend.AllowPaging = true;
            grdvwInterface5ReadyToSend.AllowSorting = true;
            grdvwInterface5ReadyToSend.DataBind();

问题是我找不到如何进行加载。我查了一个这样的例子:

IntranetModelContainer db = new IntranetModelContainer();
      db.Entities.OfType<Employee>().Load();
      return db.Entities.Local.OfType<Employee>();

我添加了对 System.Data.Entity 的引用,但在我的实体 3 或 LOad 方法中找不到 .Entities。我该怎么做?

【问题讨论】:

  • 查询正常。我只需要知道如何对它进行 DataBind。

标签: c# asp.net entity-framework


【解决方案1】:

我通过调用 ToList() 方法解决了它。

【讨论】:

  • 小心ToList() 将所有数据不分页。最好在数据库中执行分页。这种方法减少了应用程序端的网络带宽和内存消耗
【解决方案2】:

ToList() 可能太慢,因为它会尝试获取所有属性 (get{}) 并解析与其相关的另一个对象。一种快速的方法可以是:

yourLinq.AsQueryable()

【讨论】:

  • 我投了反对票。意图是好的,但错过了对问题的理解。 .AsQueryable() 无法解决手头的问题,当从 DbSet、DbQuery、DbSqlQuery 或 DbRawSqlQuery 绑定到 Web 控件时,它总是会产生相同的错误。虽然我同意 .ToList() 可能会很慢且效率低下,但它可能是这个问题的最佳解决方案。如果您的 EF 对象包含大量对象关系,最好的解决方案是首先构建一个分离的对象,该对象仅包含您需要的属性,因此在调用 .ToList() 时不会执行所有相关的对象属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
相关资源
最近更新 更多