2009-10-20 58 views
4

映射-文件:NHibernate的LINQ的 - - “无法解析属性”

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
       assembly="DaVinci" 
       namespace="DaVinci.Domain"> 
    <class name="Waehrungskurs" table="WAEHRUNGSKURSE"> 
    <id name="Id" column="ID"> 
     <generator class="native" /> 
    </id> 
    <property name="ISOCode" column="ISO" /> 
    <property name="AktuellerKurs" column="AKTKURS" /> 
    <property name="Kursart" column="KIND_OF_KURS" /> 
    <property name="WährungstabkurseId" column="WAEHRUNGSTABKURSE_ID" /> 
    <property name="Departure" column="DEPARTURE" /> 
    <property name="Datum" column="DATE_TIME" /> 
    <property name="RealerKurs" column="REALKURS" /> 
    <property name="Gültig" column="GUELTIG" />  
    </class> 
</hibernate-mapping> 

Domain.cs:
...
公共虚拟双AktuellerKurs {获得;组; }
public virtual DateTime Datum {get;设置;}
public virtual DateTimeGültig{get;组; }
public virtual int Id {get;组; }
公共虚拟字符串ISOCode {get;组; }
public virtual int Kursart {get;组; }
public virtual double RealerKurs {get;组; }
public virtual intWährungstabkurseId{get;组; }
...

我得到一个NHibernate.QueryException( “无法解析属性:Datum.Date的:DaVinci.Domain.Waehrungskurs”)当我调用下面的函数:

public static Domain.Waehrungskurs GetByISOAndKursartAndDate(string isocode, int kursart, DateTime datum) 
    {    

     return (from WK in session.Linq<DaVinci.Domain.Waehrungskurs>()      
       where WK.ISOCode == isocode 
          && 
         WK.Kursart == kursart 
          && 
         WK.Datum.Date == datum.Date 
       orderby WK.Id descending 
       select WK).First(); 
    } 

当我删除搜索条件“WK.Datum.Date == datum.Date”,该功能正常工作。

任何想法为什么无法找到该物业?

回答

1

未找到日期时间的date-property,因为它没有实现。请写点补丁this class

+0

这是因为这些功能可以通过调用一个在框架内予以实施平凡的一个非常明显的遗漏。而不是抱怨,我已经为每个文件的功能编写了一个补丁,所有的文本内容,以及我添加了DayOfWeek,DayOfYear和Date。 如何提交? – 2010-01-21 22:46:33

+0

@Gareth Farrington:太棒了!也许你可以把它作为一个颠覆补丁提交给NHibernate.Linq的作者? – Paco 2010-01-22 13:14:59

+0

我刚刚为我们的项目更新了所有库(Nhibernate/ActiveRecord),我发现Linq现在是NHibernate核心的一部分。我为这个补丁编写的文件甚至不存在于新代码中。使用新代码进行的测试表明,此问题尚未解决。从Select子句访问工作,但从GroupBy访问不。 我们决定修改我们的表格。我们将日/月/年整数列添加到我们需要进行分组/ where子句的日期。它不那么痛苦,可能性更高。 我不知道我应该从这里出发。 – 2010-01-25 21:04:33

0

该物业不存在。

尝试更换:WK.Datum.Date == datum.Date

WK.Datum == datum.Date 
相关问题