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

Mar*_*ing 2 .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;}
}
Run Code Online (Sandbox Code Playgroud)

请注意我如何将两个关系返回给User对象.当FHN生成表模式时,我从事务表返回到用户表的3 FK关系,"Buyer_id","Seller_id","User_id"

我认为它是基于默认情况下将引用属性称为"用户"的事实错误地自动生成"User_id"字段

如何使用FNH指定此映射?

Mar*_*ing 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();
Run Code Online (Sandbox Code Playgroud)

  • 任何以"Yarg"开头的答案都会得到我的投票 (5认同)