我在 NHibernate 的 LINQ 实现中遇到了一个不受支持的功能的问题(它正在触发QueryException
:“无法解析属性:CreatedOn.Date of: Example.Comment”)。
给定下面的实体,我想通过对每天的评论进行分组来提取统计数据并总结每天的评论数量(自然它有额外的属性和正确的映射,用 Fluent NHibernate 编写):
public class Comment
{
public virtual DateTime CreatedOn
{
get;
set;
}
}
我的 LINQ 查询如下所示(如果针对 LINQ to SQL 上下文执行查询,则可以正常工作)。
var commentsPerDay = (from c in session.Linq<Comment>()
group c by new { c.CreatedOn.Date } into g
select new
{
Date = g.Key.Date,
Count = g.Count()
};
正确的解决方案是为项目做出贡献并解决此问题。
另一方面,我很想知道 (LINQ to) NHibernate 是否有一个可扩展点,我可以在其中注入这种行为。我知道我可能会创建一个自定义类型并将第二个属性映射到创建时间的日期部分,但我猜这不会转换为查询,这会使其太慢。
我对重写查询的访问权限有限,因为它们仍然必须使用 LINQ to SQL,所以我不能使用 HQL。