2010-09-20 74 views
0

所以像往常一樣,我有一個與ria服務+ nhibernate的問題。問題是如何使用「引用」映射的實體屬性 在客戶端可見。問題是當你加載一個沒有這個字段的實體 並且嘗試保存它時,那麼缺失值在db內更新爲NULL。這裏的類架構:「References」屬性在客戶端不可見

public class A 
{ 
      public virtual ComplexProperty property {get;set;} 
} 

public class AMap 
{ 
    public AMAP() 
    { 
    References(p=>p.property).Nullable().Column(「COMPLEX_PROPERTY_ID」); 
    } 
} 

慣用的伎倆與包括和關聯屬性(如使用的hasMany)不起作用,因爲沒有(我已經跳過部分與映射/因爲它的基礎類中作出聲明鍵屬性)真正的foreign_key屬性 A級

回答

0

找到了一個適用於我的解決方案。將「假」外鍵屬性添加到未映射到數據庫的類A足夠了。它允許定義關聯關係:

 public class A 
     { 
      [Include] 
      [Association("Relation1","ComplexPropertyId","Id")] 
      public virtual ComplexProperty property {get;set;} 
      public virtual int ? ComplexPropertyId {get;set;} 
     } 

最後一件事做的是從數據庫中檢索對象後手動設置ComplexPropertyId在客戶端(映射都保持着)。

public IQueryable<A> GetA() 
{ 
var item = repository.Query<A>(); 
foreach(var a in item) a.ComplexPropertyId = a.ComplexProperty.Id; 
return item; 
}