清除从Entity Framework填充的DataGridView

时间:2014-10-01 02:56:43

标签: c# entity-framework datagridview

现在我有一个表格,它将根据搜索到的作者姓氏进行填充。我希望一次只显示一位作者,但此当前代码不会删除先前的搜索结果,而是将下一个搜索结果添加到第一个搜索结果下方。好像我需要清除datagridview或bindingsource但是我没有运气。 我尝试使用

datagridview.DataSource = null;
bindingsource.DataSource = null;
bindingsource.Clear();
在我的代码中的if语句之前以不同的方式

,并且想要在添加下一个搜索结果之前清除表。但是,只需点击几下按钮就会清除所有数据,然后在重新启动程序之前不会显示任何内容。我对此非常陌生,而且我一直试图抓住它,但它进展缓慢。

private void btnSearch_Click(object sender, EventArgs e)
  {                  
      if (txtSearch.Text == " ")
          return;
      else
      {              
          dbcontext.Authors
              .Where(author => author.LastName.Equals(txtSearch.Text))
              .Load();

          authorBindingSource.DataSource = dbcontext.Authors.Local.ToBindingList();
      }
  }

1 个答案:

答案 0 :(得分:0)

Load方法只确保加载实体locally。它基本上是一个虚拟方法,只是将查询结果放入EF的缓存中。

您目前正在确保搜索结果位于缓存中,然后显示整个缓存。

您无需显式加载实体,也不想显示所有本地实体,只需要搜索结果。

我认为这样可行:

authorBindingSource.DataSource = 
  dbcontext.Authors
    .Where(author => author.LastName.Equals(txtSearch.Text))
    .ToList();