我正在使用Fluent NHibernate,我有两个表:
BusinessPlan [Id, Year, CustomerCode]
PreviousYearData [Id, Year, CustomerCode, MoreFieldsForData]
在我的域中,我想将PreviousYearData加入BusinessPlan,使实体成为这样:
public class BusinessPlan {
public Guid Id { get; set; }
public int Year { get; set; }
public string CustomerCode { get; set; }
public PreviousYearData PreviousYearData {get; set;}
}
public class PreviousYearData {
public Guid Id { get; set; }
public int Year { get; set; }
public string CustomerCode { get; set; }
// many more fields
}
PreviousYearData表中的数据会在创建BusinessPlans之前的年初预先填充,因此我不知道BusinessPlan的ID是什么,也无法创建正常的外键。我想我想要做的是根据Year和CustomerCode这两个列将PreviousYearData加入BusinessPlan。这可能与Fluent NHibernate一起使用吗?还有另一种方法可以解决这个问题吗?
答案 0 :(得分:1)
我想这或类似的应该适合你:
HasMany(x => x.PreviousYearDatas )
.Access.AsCamelCaseField(Prefix.Underscore)
.WithKeyColumns("YEAR", "CUSTOMER_CODE")
.LazyLoad();
你将收集,但你将能够得到你想要的东西。
还有另一种结构:
HasMany(
// some mapping but includes one foreign key - say customer code
.Where( "YEAR = 2010" )
可能这是最好的选择。我不认为岁月经常变化:)
答案 1 :(得分:0)
我不明白为什么在BusinessPlan表中有外键有问题:PreviousYearDataId
在BusinessPlan中的只需添加:
References(x => x.PreviousYearData )
.Column("PreviousYearDataId")