C# 找不到Linq到nHibernate方法

C# 找不到Linq到nHibernate方法,c#,nhibernate,fluent-nhibernate,linq-to-nhibernate,C#,Nhibernate,Fluent Nhibernate,Linq To Nhibernate,代码: 参考问题?任何帮助都将不胜感激 编辑 我尝试使用不可为空的日期时间,这会产生相同的错误。有些东西正试图呼叫: System.Collections.IDictionary NHibernate.ISessionFactory.GetAllClassMetadata() 当我通过vs2010签出ISessionFactory时,medadata没有显示“GetAllClassMetadata()”方法。可能linq提供程序不理解startDate.Value getter调用。试一试

代码:

参考问题?任何帮助都将不胜感激



编辑 我尝试使用不可为空的日期时间,这会产生相同的错误。有些东西正试图呼叫:

System.Collections.IDictionary NHibernate.ISessionFactory.GetAllClassMetadata()

当我通过vs2010签出ISessionFactory时,medadata没有显示“GetAllClassMetadata()”方法。

可能linq提供程序不理解startDate.Value getter调用。试一试

.Where(x => x.EventDate >= startDate && x.EventDate <= endDate)

。在哪里(x=>x.EventDate>=startDate&&x.EventDate我最终删除了我对fluent/nhibernate的引用。我使用nuget获取fluent包,但可能有问题。我下载了fluent nhibernate的最新程序集,并删除了对我能找到的那些组件的任何引用。这似乎已经解决了问题


顺便说一句,我现在使用的是Query()而不是Linq()

NHibernate Linq提供程序有时有点问题。在Linq查询中使用方法参数之前,请尝试将其存储到局部变量中

public IEnumerable<CalendarItem> GetCalendarItems(DateTime? startDate = new DateTime?(), DateTime? endDate = new DateTime?())
{
    if (startDate.HasValue && endDate.HasValue)
    { 
      DateTime? start = startDate.Value;
      DateTime? end = endDate.Value;

      var items = session.Linq<CalendarItem>()
                         .Where(x => x.EventDate >= start && x.EventDate <= end)
                         .ToList<CalendarItem>();

      return items; 
    }
    ...
}
public IEnumerable GetCalendarItems(DateTime?startDate=new DateTime?(),DateTime?endDate=new DateTime?())
{
if(startDate.HasValue&&endDate.HasValue)
{ 
日期时间?开始=开始日期值;
DateTime?end=endDate.Value;
var items=session.Linq()

。其中(x=>x.EventDate>=start&&x.EventDate谢谢,我尝试更改为不可为空的日期时间,但得到了相同的错误。
.Where(x => x.EventDate >= startDate && x.EventDate <= endDate)
public IEnumerable<CalendarItem> GetCalendarItems(DateTime? startDate = new DateTime?(), DateTime? endDate = new DateTime?())
{
    if (startDate.HasValue && endDate.HasValue)
    { 
      DateTime? start = startDate.Value;
      DateTime? end = endDate.Value;

      var items = session.Linq<CalendarItem>()
                         .Where(x => x.EventDate >= start && x.EventDate <= end)
                         .ToList<CalendarItem>();

      return items; 
    }
    ...
}