我有一个 Silverlight 4 应用程序,它使用带有 EF 的 RIA 来查询单个 DomainContext 中的多个表。BUGroup、BUGroupBuilding 和 vwBusinessUnit。
UI 基本上加载了 BUGroup 实体集,我可以选择不同的 BUGroups,它会像这样加载子表:
我有一个 DomainContext ,我将其传递给“管理建筑物”按钮中的子窗口,如下所示:
ManageBuildingsChildWindow ManageBuildingscw = new ManageBuildingsChildWindow();
ManageBuildingscw.Closed += new EventHandler(ManageBuildingscw_Closed);
ManageBuildingscw.DataContext = null;
ManageBuildingsViewModel ManageBuildingsViewModel = new ManageBuildingsViewModel();
ManageBuildingscw.DataContext = ManageBuildingsViewModel;
然后我在子窗口视图模型中加载子窗口上下文,如下所示:
GetBUGroupResult = SecurityDomainContext.Current.Load(SecurityDomainContext.Current.GetBUGroupsCustomQuery(), LoadBehavior.RefreshCurrent, false);
GetBUGroupResult.Completed += new EventHandler(GetBUGroupResult_Completed);
这是 GetBUGroupResult 的事件处理程序
void GetBUGroupResult_Completed(object sender, EventArgs e)
{
GetBUGroupBuildings = SecurityDomainContext.Current.BUGroupBuildings.Where(w => w.BUGroupID == BUGroupID).ToList();
GetBUGroupResult.Completed -= new EventHandler(GetBUGroupResult_Completed);
}
我将每个 BUGroupBuilding 绑定到数据网格中的删除链接,它可以从数据库中删除。当我单击管理建筑按钮以调用子窗口时,它第一次加载良好。如果我有 5 个建筑物,它会加载 5 个建筑物。问题是当我在删除一些建筑物后第二次或其他时间加载它时。即使在加载之后,它也会保留旧的 DomainContext。我什至尝试在 GetBUGroupsCustomQuery() 的负载上将 LoadBehavior 设置为 RefreshCurrent
假设我在一个组中有 5 个建筑物,我使用删除链接在父窗口上删除了 2 个,所以现在我有 3 个。调用子窗口。它仍然显示 5。
现在我对 GetBUGroupsCustomQuery() 的 DomainServices 进行了休息,我得到了正确的 3 值
但是在 GetBUGroupResult_Completed 事件处理程序期间,我仍然看到 5 个建筑物。看起来我的 DomainContext 没有刷新,即使我指定了 loadbehavior 来刷新当前。任何输入?