2011-08-22 59 views
1

我有以下的數據庫表:(流利)NHibernate的:地圖完整表一個對象

Settings 

Key   | Value 
---------------|------------------- 
SomeSetting | Foo 
AnotherSetting | Bar 
...   | ... 

而且要將此映射到下列對象:

public class Settings 
{ 
     public virtual string SomeSetting { get; set; } 

     public virtual string AnotherSetting { get; set; } 
} 

我怎麼能做到這一點使用(流利)NHibernate的?

+0

可以喲uhave從模型在你的表格設置的多個條目似乎不那麼 – Baz1nga

+0

沒有,每個按鍵都是獨一無二的。 – Jeroen

+0

看看這個:http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/8263d39d4147fa83?fwc=1 – Baz1nga

回答

1

我會將鍵/值對映射到私有IDictionary,並通過訪問字典顯示屬性。請參閱Ayende's blog entry on map創建字典。喜歡的東西:

public class Settings 
{ 
    private IDictionary<string, string> _dict; 

    //initialize dictionary in constructor 
    public Settings() 
    { 
     _dict = new Dictionary<string, string> { {"SomeSetting", string.Empty} }; 
    } 

    public virtual string SomeSetting 
    { 
     get { return _dict["SomeSetting"]; } 
     set { _dict["SomeSetting"] = value; } 
    } 

    // etc. 

} 
+0

這與我想要的最接近。不幸的是,'設置'對象必須改變來完成這個,但似乎沒有辦法使用NHibernate做到這一點。 – Jeroen

0

好備用。將有兩列:鍵,值

它們映射到數據庫中的一列現在寫性的存儲庫類將負責對關鍵查詢數據庫並獲取值。您的存儲庫模型可能與您當前的對象模型相似。

public class Settings 
{ 
     private readonly ISession _session; 
     public Settings(ISEssion session) 
     { 
     _session=session; 
     } 
     public Setting SomeSetting { get {return session.QueryOver<Setting>().SingleOrDefault(x.Key=="SomeSetting "} } 

} 

你覺得呢?

+0

我們目前有類似的東西,但我想知道如果它可以做到而不改變數據庫或「設置」對象。 – Jeroen