2014-10-01 105 views
0

我試圖映射IDictionary<string, string>與流利NHibernate和命中路障。地圖IDictionary <字符串,字符串>與流利NHibernate

我有3種型號,

public class Node { 
    public virtual int Id { get; set; } 
    public virtual IDictionary<string string> Fields { get; set; } 
} 

public class Field { 
    public virtual int Id { get; set; } 
    public virtual string name { get; set; } 
} 

public class NodeData { 
    public virtual Node Node { get; set; } 
    public virtual Field Field { get; set; } 
    public virtual string Data { get; set; } 
} 

我的映射看起來像這樣

public NodeMap() { 
    HasMany<NodeData>(x => x.Fields) 
     .AsMap(x => x.Field.Name) 
     .Element("Data"); 
} 

然而,這是因爲Field是一個參考,而不是一個屬性顯然會給出錯誤。

我想能夠訪問我的字典一樣,Fields["name"] = value;

有沒有辦法做到這一點?

+0

如果你有'詞典<字符串,字符串>',哪裏該'Field'類從何而來? Fluent Nhibernate如何知道這一點? – 2014-10-01 19:48:41

+0

@OskarBerggren NodeData類有一個組合鍵'Node_Id'和'Field_Id'。字典基本上是 2014-10-01 19:53:18

+0

「本質上」=>不是真的。根據你的代碼,字典是一個 - 它無法在映射中假裝。這裏似乎也有一些「循環」,我不能完全放下手腳。 – 2014-10-01 20:18:46

回答

0

剛剛打完類Field和類NodeData

public NodeMap() 
{ 
    HasMany(x => x.Fields) 
     .Table("NodeData") 
     .KeyColumn("node_id") 
     .AsMap("key") 
     .Element("data"); 
} 
相關問題