2015-06-23 122 views
0

同一類的兩個表我有這個類:如何映射非主鍵

public class Account 
{ 
    public virtual int Id { get; set; } 
    public virtual decimal Balance { get; set; } 
    public virtual int IdExternalAccount { get; set; } 
} 

代表我的分貝於此項目表格帳戶。

問題是我需要將屬性Balance映射到引用名爲V_DEBITACCOUNT的其他表的特定屬性。

CREATE TABLE V_DEBITACCOUNT (
IDACCOUNT NUMERIC(19,0) NOT NULL PRIMARY KEY, 
BALANCE NUMERIC(18,4) NULL 
) 

表V_DEBITACCOUNT上的字段IDACCOUNT引用Account中的字段IdExternalAccount。

我已經使這個映射部分工作。

Table("WTBR_CVW.ACCOUNT"); 
      Id(x => x.Id, m => 
      { 
       m.Generator(Generators.Sequence, p => p.Params(new { sequence = "WTBR_CVW.SQACCOUNT" })); 
       m.Column("IDACCOUNT"); 
      }); 

Property(
       x => x.IdExternalAccount, 
       m => m.Column("IDEXTERNALACCOUNT")); 

Join("WTBR_CVW.ACCOUNT", 
       m => 
       { 
        m.Table("WTBR_CVW.V_DEBITACCOUNT"); 
        m.Optional(true); 

        m.Key(x => 
        { 
         x.PropertyRef(pr => pr.IdExternalAccount); 
         x.Column("IDACCOUNT"); 
        }); 

        m.Property<decimal>(x => x.Balance, map => 
        { 
         map.Column("AVAILABLEBALANCE"); 
        }); 

        m.Property<System.DateTime>(x => x.ReferenceDate, map => 
        { 
         map.Column("LASTUPDATETIME"); 
        }); 

       }); 

問題是PropertyRef不起作用。連接正在考慮在Account的PrimeryKey中定義的Id,並忽略指定的Id。

我做錯了什麼?

+0

我建議使用.hmb.xml部分映射它...以確保該概念正在工作(xml已被證明,如果這不起作用,沒有其他方式)。如果JOIN將使用xml而不是代碼 - 請使用它。其他選擇是一對一地進行 –

回答

1

你在這裏沒有做錯什麼。這是NHibernate的unsupported feature,它將在即將到來的4.1.0版本中修復。