2013-07-09 37 views
0

我需要返回使用NHibernate从数据库返回ACC_INTERVAL_ID属性值的列表,以获取可用的时间间隔。 NHibernate的版本为2.1.2.4000如何使用NHibernate返回来自数据库的IList <Int>类型属性值使用NHibernate

的AccreditationRecord:

public class AccreditationRecord : DomainObject 
    { 
     public AccreditationRecord() 
     { 
      Date = DateTime.Now; 
     } 

     /// <summary> 
     /// Интервал встречи 
     /// </summary> 
     public virtual AccreditationTimeIntervalEnum Interval { get; set; } 

     /// <summary> 
     /// Дата встречи 
     /// </summary> 
     public virtual DateTime Date { get; set; } 

     /// <summary> 
     /// Название компании 
     /// </summary> 
     public virtual string CompanyTitle { get; set; } 

     /// <summary> 
     /// Название выставки 
     /// </summary> 
     public virtual string ExhibitionTitle { get; set; } 

     /// <summary> 
     /// Комментарий аккредитируемого к форме 
     /// </summary> 
     public virtual string Comment { get; set; } 
    } 

映射:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Mvk.Kvc.Domain" assembly="Mvk.Kvc.Domain"> 

<class name="AccreditationRecord" table="KVC_ACCREDITATIONS" lazy="false" > 
    <id name="ID" column="ID_ACCREDITATIONS" type="Int32" unsaved-value="-1"> 
    <generator class="identity"/> 
    </id> 

    <property name="Date" column="ACC_DATE" type="DateTime" /> 
    <property name="CompanyTitle" column="COMPANYTITLE" type="AnsiString" length="512" /> 
    <property name="ExhibitionTitle" column="EXHIBITIONTITLE" type="AnsiString" length="512" /> 
    <property name="Comment" column="COMMENT" type="AnsiString" length="1000" /> 
    <property name="Interval" column="ACC_INTERVAL_ID" type="AccreditationTimeIntervalEnum" /> 
</class> 

</hibernate-mapping> 

而我的方法库:

public virtual IList<int> GetFilledIntervals(DateTime selectedDate) 
{ 
    DetachedCriteria query = DetachedCriteria 
     .For(typeof(AccreditationRecord)); 

    query.Add(Restrictions.Eq("Date", selectedDate)); 

    query.SetProjection(Projections.Id()); 
    return ?????????? 
} 

回答

0

随着HN3:

public virtual IList<int> GetFilledIntervals(DateTime selectedDate) 
{ 
    IList<int> result = 
    session.QueryOver<AccreditationRecord>()  
     .Where(ar => ar.Date == selectedDate) 
     .Select(c => c.Id) 
     .List<int>(); 

    return result; 
} 
+0

我使用2.1.2.4000 – Roman

0
public virtual IList<int> GetFilledIntervals(DateTime selectedDate) 
{ 
    DetachedCriteria query = DetachedCriteria 
    .For(typeof(AccreditationRecord)) 
    .SetProjection(Projections.Property("Interval")); 

    query.Add(Restrictions.Eq("Date", selectedDate)); 
    return List<int>(query); 
} 
相关问题