![](/img/trans.png)
[英]Fluent NHibernate Mapping / Parent/Child delete fail using composite key
[英]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.