繁体   English   中英

流利的nhibernate父子映射

[英]fluent nhibernate parent child mapping

当我尝试映射嵌套的父子关系时,我遇到了FluentNHibernate问题。 当我尝试这样的查询时:

var courier = session.Query<Courier>().FirstOrDefault(x => x.Code == "X"); 

CourierPrice中的DistributionCenter属性包含所有可能的信使(不仅限于X)的CourierPrice实体。是否可以在不修改映射的情况下更改此行为?

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");
}

我使用提供的映射制作了一个简单的应用程序,并在您使用的DistributioncenterMap中发现了一个缺陷

Id(x => x.Guid).GeneratedBy.Assigned().Column("Guid");

代替

Id(x => x.Guid).GeneratedBy.Guid().Column("Guid");

我在测试运行中添加了一些行,其中两个是Code ==“ X”,它使我获得了第一个没有问题的行。 试试看

查询返回正确的结果。 Distributioncenter.Courierprices集合应包含所有链接到Distributioncenter的Courierprices。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM