流利的Nhibernate AutoMapping - 同桌的2个外键?

时间:2009-09-14 19:15:45

标签: .net nhibernate orm fluent-nhibernate

假设我正在做一个基本的交易系统,我有以下对象。

public class User
{
   public virtual int Id{get; set;}
}

public class Transaction
{
   public virtual int Id{get; set;}
   public virtual Item Item {get; set;}
   public virtual User Seller{get; set;}
   public virtual User Buyer{get; set;}
}

注意我有两个关系回到User对象。当FHN生成表模式时,我从事务表中获得3个FK关系,返回到User表,“Buyer_id”,“Seller_id”,“User_id”

我认为它会自动生成“User_id”字段,因为默认情况下它会将引用属性称为“用户”

如何使用FNH指定此映射?

1 个答案:

答案 0 :(得分:9)

Yarg!

我在做自动映射时最终想通了你必须指定一个带有两个单独的Has Many映射的覆盖

   return Fluently.Configure()
    .Database(persistenceConfigurer)
    .Mappings(m => m.AutoMappings.Add(
        AutoMap.AssemblyOf<User>()
            .Override<User>(map=> map.HasMany(user=> user.Transactions).KeyColumn("Buyer_id"))
            .Override<User>(map => map.HasMany(user => user.Transactions).KeyColumn("Seller_id"))                
        ))
    .ExposeConfiguration(BuildSchema)
    .BuildSessionFactory();