映射-文件: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」,該功能正常工作。
任何想法爲什麼無法找到該物業?
這是因爲這些功能可以通過調用一個在框架內予以實施平凡的一個非常明顯的遺漏。而不是抱怨,我已經爲每個文件的功能編寫了一個補丁,所有的文本內容,以及我添加了DayOfWeek,DayOfYear和Date。 如何提交? – 2010-01-21 22:46:33
@Gareth Farrington:太棒了!也許你可以把它作爲一個顛覆補丁提交給NHibernate.Linq的作者? – Paco 2010-01-22 13:14:59
我剛剛爲我們的項目更新了所有庫(Nhibernate/ActiveRecord),我發現Linq現在是NHibernate核心的一部分。我爲這個補丁編寫的文件甚至不存在於新代碼中。使用新代碼進行的測試表明,此問題尚未解決。從Select子句訪問工作,但從GroupBy訪問不。 我們決定修改我們的表格。我們將日/月/年整數列添加到我們需要進行分組/ where子句的日期。它不那麼痛苦,可能性更高。 我不知道我應該從這裏出發。 – 2010-01-25 21:04:33