作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个类:
public class Reference
{
public virtual string Id { get; set; }
// ...
public virtual Stamp Stamp { get; set; }
}
public class Stamp
{
public DateTime? Created { get; set; }
public User CreatedBy { get; set; }
public DateTime? LastUpdated { get; set; }
public User LastUpdatedBy { get; set; }
}
Reference.Stamp 使用以下流畅的 nhibernate 映射映射为一个组件(以便“Stamp”字段出现在 Reference 表中):
public class ReferenceMap : ClassMap<Reference>
{
public ReferenceMap()
{
Id(e => e.Id);
// ...
Component(e => e.Stamp);
}
}
public class StampMap : ComponentMap<Stamp>
{
public StampMap()
{
Map(e => e.Created);
References(e => e.CreatedBy);
Map(e => e.LastUpdated);
References(e => e.LastUpdatedBy);
}
}
我想对“CreatedBy”和“LastUpdatedBy”字段进行急切获取,以避免在列出我的“引用”项目时出现 N+1。
我试过这个:
Reference[] references = session
.Query<Reference>()
.Fetch(r => r.Stamp.CreatedBy)
.Fetch(r => r.Stamp.LastUpdatedBy)
.ToArray();
导致此错误的原因:
System.ArgumentException:获取请求必须是 o => o.Related 类型的简单成员访问表达式; “r.Stamp.CreatedBy”太复杂了。
关于如何让我的抓取工作有什么想法吗?
最佳答案
我认为这是 LINQ 提供程序的限制。
您可以:
Fetch
(有更好的替代方法来解决 N+1 问题;我更喜欢批处理)Component
不过,我相信您的构造应该得到支持。您可以在 https://nhibernate.jira.com 打开一个问题
关于nhibernate - 与组件一起使用时,Linq to nHibernate Fetch 给出错误 "A fetch request must be a simple member access expression",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504639/
我是一名优秀的程序员,十分优秀!