首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DevExpress XPO XPCollection刷新更改

DevExpress XPO XPCollection刷新更改
EN

Stack Overflow用户
提问于 2013-04-09 14:14:36
回答 1查看 7.7K关注 0票数 0

在使用XPCollection完成一些数据库更改之后,我遇到了一个在UnitOfWork中刷新数据的问题。

我有一个WinForm和一个XPCollection。

XPCollection使用XpoDefault.Session。

我通过一个UnitOfWork做了一些更改:

代码语言:javascript
复制
using (UnitOfWork uow = new UnitOfWork())
    {
    var photos = new XPCollection<Photo>(uow);
    photos[0].Date = DateTime.Now;
    uow.CommitTransaction();

    }

为了获得原始的XPCollection来更新更改,我尝试了以下方法:

代码语言:javascript
复制
foreach (Photo photo in myXPCollection)
{
XpoDefault.Session.Reload(photo);
}

foreach (Photo photo in myXPCollection)
{
photo.Reload();           
}

myXPCollection.Reload()

没有一个方法的work.The更改没有反映在原始的XPCollection中。

只有当我以一个全新的会话开始时,它们才是可见的。显然,这是一个很大的性能问题。

如何将使用UnitOfWork进行的更改转移到另一个会话?

EN

回答 1

Stack Overflow用户

发布于 2013-04-09 14:35:57

你说过:

只有当我以一个全新的会话开始时,它们才是可见的。显然,这是一个很大的性能问题。

这正是你应该做的。每次需要刷新数据时都创建一个新的UnitOfWorkUnitOfWork是非常便宜的性能实例化。如果您拥有大量的Photo对象集合,则应该通过在XPCollection<Photo>构造函数中指定Criteria参数来仅加载所需的对象来提高性能。

当您发出Reload()时,它不会从数据库中获取任何内容:它丢弃任何更改,并从会话标识映射重新加载对象。有关更多信息,您可以阅读这篇文章这个支持中心的问题

顺便说一下,到目前为止,DevExpress支持中心是问DevExpress问题的最佳场所。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15904351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档