使用Fluent NHibernate的两个非FK列加入表

Bra*_*ell 8 architecture nhibernate fluent-nhibernate

我正在使用Fluent NHibernate,我有两个表:

 BusinessPlan [Id, Year, CustomerCode]

 PreviousYearData [Id, Year, CustomerCode, MoreFieldsForData]
Run Code Online (Sandbox Code Playgroud)

在我的域中,我想将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
}
Run Code Online (Sandbox Code Playgroud)

PreviousYearData表中的数据在创建BusinessPlans之前的年初预先填充,因此我不知道BusinessPlan的Id将是什么,并且无法创建正常的外键.我想我想要做的是根据Year和CustomerCode这两个列将PreviousYearData加入BusinessPlan.这可能与Fluent NHibernate一起使用吗?还有另一种方法可以解决这个问题吗?

And*_*day 1

我想这个或类似的应该适合你:

        HasMany(x => x.PreviousYearDatas )
            .Access.AsCamelCaseField(Prefix.Underscore)
            .WithKeyColumns("YEAR", "CUSTOMER_CODE")
            .LazyLoad();
Run Code Online (Sandbox Code Playgroud)

你会有收藏,但你一定能得到你想要的。

另外还有另一种构造:

        HasMany( 
            // some mapping but includes one foreign key - say customer code
            .Where( "YEAR = 2010" )
Run Code Online (Sandbox Code Playgroud)

也许这就是最好的选择。我不认为岁月会经常改变:)