2013-10-04 37 views
0

我將如何能夠映射另一個對象與兩列不是鍵?流利NHibernate:如何映射兩個非鍵列

public class Car 
{ 
    public virtual int Id { get; set; } 
    public virtual int AccountId { get; set; } 
} 

public class UserAccount 
{ 
    public virtual int Id { get; set; } 
    public virtual int UserId{ get; set; } 
    public virtual int AccountId { get; set; } 
} 

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

比方說,我想要獲得所有與User.Name爲「喬」的汽車。我將如何映射/查詢這些與流利的nhibernate?

public Car() 
    { 
     Table("Car"); 
     Id(x => x.Id).Column("ID").GeneratedBy.Native(); 
     Map(x => x.AccountId); 
     References(x => x.Account); // ?? needs to map accountid with the Account.Id... 
    } 

回答

0

如果你想映射引用,你需要的是類型,而不是密鑰。

public class Car 
{ 
    public virtual int Id { get; set; } 
    public virtual UserAccount Account { get; set; } 
} 

那麼你將這樣

public Car() 
{ 
    Table("Car"); 
    Id(x => x.Id).Column("ID").GeneratedBy.Native(); 
    References(x => x.Account, "AccountId"); 
} 
+0

映射它使參考文獻(X => x.Account, 「ACCOUNTID」),則假設將ACCOUNTID walys是主鍵? – PizzaHead

+0

不,AccountId只是列名。通過說「參考」,它將使用「UserAccount」類型的映射信息來加載/加入以獲取信息 –

+0

我需要爲UserAccount中的映射做些什麼才能使Car中的參考工作? – PizzaHead