0
我有以下问题使用流利nhibernate和HasMany。我搜索谷歌和SO类似的问题,但我找到的任何解决方案都不能解决我的问题。流利NHibernate和HasMany映射
我有以下映射的entites(I为清楚起见省略大多数属性):
PaymentSchedule.cs
public class PaymentSchedule
{
public virtual BinaryId Id { get; set; }
public virtual IList<PaymentToSchedule> Payments { get; set; }
}
PaymentToSchedule.cs
public class PaymentToSchedule
{
public virtual BinaryId Id { get; set; }
public virtual PaymentSchedule PaymentSchedule { get; set; }
}
映射文件
PaymentScheduleMap。 cs
个public class PaymentScheduleMap : ClassMap<PaymentSchedule>
{
public PaymentScheduleMap()
{
Table("A_Payment_Schedule");
Id(x => x.Id, "A_Payment_Schedule_Id").CrmId();
HasMany<PaymentToSchedule>(x => x.Payments).Table("A_Payment_To_Schedule").KeyColumns.Add("A_Payment_Schedule_Id").Fetch.Select();
}
}
PaymentToScheduleMap.cs
public class PaymentToScheduleMap : ClassMap<PaymentToSchedule>
{
public PaymentToScheduleMap()
{
Table("A_Payment_To_Schedule");
Id(x => x.Id, "A_Payment_To_Schedule_Id").CrmId();
References(x => x.PaymentSchedule, "A_Payment_Schedule_Id");
}
}
基本上我想加载PaymentSchedule对象时获取PaymentToSchedule entites的列表。在查询
var paymentSchedules = dataAccess.Session.QueryOver<PaymentSchedule>().List();
和每个付款时间表
var paymentToSchedule = (from pts in dataAccess.Session.Query<PaymentToSchedule>()
where pts.PaymentSchedule.Id == ps.Id).
ToList<PaymentToSchedule>();
这工作得很好,但有什么办法来获取PaymentToSchedule的entites的列表:现在,要做到这一点,我必须使用此类查询付款时间表?
不幸的是,这段代码不起作用。它导致一个空的集合,而执行sql select语句导致返回1行。此外,我使用ShowSql()选项,而会话工厂配置和nhibernate执行适当的SQL来获取PaymentToSchedule实体...但似乎并没有填充集合。 – krajew4
然后出现了问题。可以尝试不使用'.Fetch.Select()'? – Firo