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

时间:2010-09-16 21:05:51

标签: nhibernate fluent-nhibernate architecture

我正在使用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一起使用吗?还有另一种方法可以解决这个问题吗?

2 个答案:

答案 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")