【发布时间】:2013-11-14 21:46:01
【问题描述】:
当我尝试映射嵌套的父子关系时,我遇到了 FluentNHibernate 问题。 当我尝试这样的查询时:
var courier = session.Query<Courier>().FirstOrDefault(x => x.Code == "X");
CourierPrice 中的 DistributionCenter 属性包含所有可能的快递员的 CourierPrice 实体,而不仅仅是 X。是否可以在不修改映射的情况下更改此行为?
public class Courier
{
public Courier()
{
Courierprices = new List<Courierprice>();
}
public virtual System.Guid Guid { get; set; }
public virtual string Code { get; set; }
public virtual IList<Courierprice> Courierprices { get; set; }}
}
public class Courierprice
{
public virtual System.Guid Guid { get; set; }
public virtual Courier Courier { get; set; }
public virtual Distributioncenter Distributioncenter { get; set; }
public virtual decimal? Price { get; set; }
}
public class Distributioncenter
{
public Distributioncenter()
{
Postcodes = new List<Postcode>();
}
public virtual System.Guid Guid { get; set; }
public virtual string Code { get; set; }
public virtual IList<Courierprice> Courierprices { get; set; }
}
映射:
public CourierMap()
{
Table("Couriers");
LazyLoad();
Id(x => x.Guid).GeneratedBy.Assigned().Column("Guid");
Map(x => x.Code).Column("Code");
HasMany(x => x.Courierprices).KeyColumn("Courier");
}
public CourierpriceMap()
{
Table("CourierPrices");
LazyLoad();
Id(x => x.Guid).GeneratedBy.Assigned().Column("Guid");
References(x => x.Courier).Column("Courier");
References(x => x.Distributioncenter).Column("DistributionCenter");
Map(x => x.Price).Column("Price");
}
public DistributioncenterMap()
{
Table("DistributionCenters");
LazyLoad();
Id(x => x.Guid).GeneratedBy.Assigned().Column("Guid");
Map(x => x.Code).Column("Code");
HasMany(x => x.Courierprices).KeyColumn("DistributionCenter");
}
【问题讨论】:
-
如果你尝试过 session.QueryOver
().Where(x => x.Code == "X").Take(1).SingleOrDefault ();如果这没有帮助,我想看看你的映射 -
遗憾的是没有变化。我编辑了帖子并添加了我的映射代码。
-
你不必调用 LazyLoad(),它是默认的。
标签: c# nhibernate fluent-nhibernate mapping nhibernate-mapping