2014-10-01 2 views
0

Я пытаюсь сопоставить IDictionary<string, string> с Fluent NHibernate и попал в дорожный блок.Карта IDictionary <строка, строка> с Fluent 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 знает об этом? –

+0

@OskarBerggren Класс 'NodeData' имеет составной ключ' Node_Id' и 'Field_Id'. Словарь по существу

+0

"по существу" => не совсем. Словарь представляет собой в соответствии с вашим кодом - это не помогает притворяться иначе в сопоставлениях. Там также, кажется, есть какая-то «круглость», на которую я не могу положиться. –

ответ

0

просто удар класса Field и класс NodeData и

public NodeMap() 
{ 
    HasMany(x => x.Fields) 
     .Table("NodeData") 
     .KeyColumn("node_id") 
     .AsMap("key") 
     .Element("data"); 
} 
Смежные вопросы