我有一个带有二进制列的实体,该实体在映射中设置为延迟加载。但在某些情况下,我们希望同时获取实体和二进制数据。我尝试使用 Linq.Fetch(x => x.BinaryData),但这给出了无效的连接异常。可以理解,考虑到它一开始就不应该是连接。有办法让它发挥作用吗?我正在使用 NHibernate 3.1
这是映射:
Map(x => x.BinaryData)
.CustomSqlType("image")
.Length(int.MaxValue)
.Not.Nullable()
.LazyLoad(); // Wanna make sure we don't kill the app by loading the image data when we don't need it.
这是抓取:
Linq.Where(x => x.Id == id).Fetch(x => x.BinaryData).FirstOrDefault();
最佳答案
目前看来这是不可能的:https://nhibernate.jira.com/browse/NH-2888
所以,你必须使用 HQL :
var post = session.CreateQuery("from Post fetch all properties")
.SetMaxResults(1)
.UniqueResult<Post>();
来源:http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties
关于nhibernate - 在 NHibernate 中获取 *不是* 引用的延迟加载属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620455/