【发布时间】:2013-06-01 11:43:19
【问题描述】:
在这个例子中:
using System;
using System.Collections.Generic;
using dbModel;
using System.Linq;
using System.Data.Entity.Infrastructure;
namespace WinApp
{
public partial class Form1 : Form
{
private dbEntities dbc;
public IQueryable<ARTIKLI> art;
public IQueryable<ART_GRUPE> grp;
public Form1()
{
InitializeComponent();
dbc = new dbEntities();
}
private void GetData()
{
art = from a in dbc.ARTIKLIs
select a;
grp = from g in dbc.ART_GRUPE
select g;
artikliBindingSource.DataSource = art.ToList();
artGrupeBindingSource.DataSource = grp.ToList();
}
private void Form1_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
dbc.SaveChanges();
}
private void loadData_Click(object sender, EventArgs e)
{
this.GetData();
}
private void refresh_Click(object sender, EventArgs e)
{
dbc.Entry(grp).Reload();
artGrupeBindingSource.ResetBindings(false);
}
}
}
一切正常。但是当我运行并单击刷新按钮时出现错误:
实体类型 DbQuery`1 不是当前上下文模型的一部分
我只是尝试使用DbContext 为grp 实体实例从存储中刷新数据。我知道我可以将DbContext 转换为ObjectContext 然后使用Refresh 方法,但是
DbContext.Entry(entity).Reload();应该可以做同样的事情
有人可以解释我在上面代码中的错误吗?
【问题讨论】:
-
grp不是实体,而是查询 -
我知道...如何使用 dbContext 刷新查询?
-
我会再次致电
GetData -
@Virtuo。请告诉我们
dbEntities是什么(是DbContext),当您说“再次调用GetData 不起作用”时,您所说的“不起作用”是什么意思":如果您想很好地回答您的问题,错误消息或(缺乏)预期行为很重要。 -
DbContext 中现在有“StoreWins”刷新机制,就像在 ObjectContext 中一样。使用重新加载,您一次只能刷新一个实体。这里的最佳实践是处理 DbContext,创建新的并再次获取数据。我也错过了 ObjectContext 刷新:(
标签: c# winforms orm entity-framework-5