Linq到NHibernate查询问题

时间:2010-09-13 17:15:39

标签: linq linq-to-nhibernate

为什么以下工作:

var profiles = (eventId > 0)
    ? Profiles.Query().Where(p => p.Event.Id == eventId).ToList()
    : Profiles.Query().Where(p => p.Event == null).ToList();

以下时不会:

var profiles = (from p in Profiles.Query()
                where (eventId > 0)
                    ? p.Event.Id == eventId
                    : p.Event == null
                select p).ToList()

当eventId为-1时,前者返回1行,但后者返回0行。我运行了一个SQL Profiler,发现NHibernate正在生成一个看似如下的where子句:

WHERE 1 = 0 AND (...)

但我不明白为什么? Linq对NHibernate在where子句中评估三元表达式有困难吗?这一般是Linq的问题吗?

1 个答案:

答案 0 :(得分:0)

似乎只是在Linq中对NHibernate。如果将此查询与Linq应用于对象,则可以正常工作。