如何解决nhibernate-nhprof-一对多的双向关联在惰性负载上设置的无界结果
| 我有一个具有相应子级的标准Category域实体。即类别及其对应的子类别。如下所示。相当标准的东西。public class Category : Entity
{
private IesiCollections.ISet<Category> _children;
public Category()
{
_children = new HashedSet<Category>();
}
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual Category Parent { get; private set; }
public virtual ICollection<Category> Children { get { return _children; } }
public virtual bool AddCategory(Category category)
{
if (category != null && _children.Add(category))
{
category.SetParent(this);
return true;
}
return false;
}
public virtual bool RemoveCategory(Category category)
{
if (category != null && _children.Remove(category))
{
category.SetParent(null);
return true;
}
return false;
}
}
我正在使用NHibernate Profiler来确保一切都在最佳运行。但是,当我通过调用\“ RemoveCategory \”方法并传递一个类别来删除子类别时,它必须访问名为\“ _ children \”的基础集合,这会启动\“ _ children \”集合的延迟加载。 。
这会导致NHProf中出现“无限制结果集”警报,这很有意义,因为我们尚未指定限制。它将加载整个集合。我想指定一个限制,因为此集合可能会变得很大。
我看了nhprof网站上关于无限结果的示例(如下所示),但是我看不到如何使用它。
var order = session.Get(orderId);
var orderLines = session.CreateFilter(order.OrderLines,\"\")
.SetFirstResult(0)
.SetMaxResults(25)
.List();
DoSomethingWithOrderLines(orderLines);
当我们显示数据但我想更新我的实体并最终保留它时,这似乎很有用。关于如何指定集合的延迟加载的任何想法?
亲切的问候
穆罕默德
解决方法
您可以通过执行以下操作来避免完全访问Children属性:
category.Parent = null;
我意识到这只是一个解决方法,但是如果您只需要这,那便是最简单的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。