gpt4 book ai didi

c# - Silverlight 4 与 RIA + EntityFramework + MVVM : Childwindow DomainContext Load does not refresh

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:14 27 4
gpt4 key购买 nike

我有一个 silverlight 4 应用程序,它使用带有 EF 的 RIA 来查询单个 DomainContext 中的多个表。 BUGroup、BUGroupBuilding 和 vwBusinessUnit。 enter image description here

UI 基本上加载 BUGroup 实体集,我可以选择不同的 BUGroup,它会像这样加载子表: enter image description here

我有一个 DomainContext,我要将其传递给“管理建筑物”按钮中的子窗口,如下所示:

        ManageBuildingsChildWindow ManageBuildingscw = new ManageBuildingsChildWindow();
ManageBuildingscw.Closed += new EventHandler(ManageBuildingscw_Closed);
ManageBuildingscw.DataContext = null;
ManageBuildingsViewModel ManageBuildingsViewModel = new ManageBuildingsViewModel();
ManageBuildingscw.DataContext = ManageBuildingsViewModel;

然后我像这样在子窗口 View 模型中加载子窗口上下文:

        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 绑定(bind)到数据网格中的一个删除链接,它可以很好地从数据库中删除。当我单击管理建筑物按钮调用子窗口时,它第一次加载正常。如果我有 5 座建筑物,它会加载 5 座建筑物。问题是当我在删除一些建筑物后第二次或其他时候加载它。它甚至在加载后仍保留旧的 DomainContext。我什至尝试在 GetBUGroupsCustomQuery() 的负载上将 LoadBehavior 设置为 RefreshCurrent

假设我在一个组中有 5 个建筑物,我使用删除链接在父窗口中删除了 2 个,所以现在我有 3 个。调用子窗口。它仍然显示5。 enter image description here

现在我在 DomainServices 上为 GetBUGroupsCustomQuery() 打断,我得到了正确的 3 值 enter image description here

但是在 GetBUGroupResult_Completed 事件处理程序期间,我仍然看到 5 个建筑物。看起来我的 DomainContext 没有刷新,即使我指定了 loadbehavior 来刷新当前。任何输入?

enter image description here

最佳答案

我遇到了与此类似的问题,解决方法是将数据加载到上下文中,然后分离实体集合中不在新返回对象集合中的任何对象。在您的加载操作中尝试这样的事情:

SecurityDomainContext.Current.Load<YourObjectType>(
SecurityDomainContext.Current.GetBUGroupsCustomQuery(),
LoadBehavior.MergeIntoCurrent,
loadOperation =>
{
var results = context.Comments.Where(
entity => !loadOperation.Entities.Contains(entity)).ToList();
results.ForEach(entity => context.Comments.Detach(entity));
}, null);

我不确定您是否需要替换 <YourObjectType>使用返回的实体类型,或者如果您可以删除该部分,但这至少应该让您关闭。

关于c# - Silverlight 4 与 RIA + EntityFramework + MVVM : Childwindow DomainContext Load does not refresh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com