C# 使用Fluent NHibernate映射IDictionary

C# 使用Fluent NHibernate映射IDictionary,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我试图用Fluent NHibernate绘制一个词典,但遇到了一个路障 我有三个模型 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; } publi

我试图用Fluent NHibernate绘制一个词典,但遇到了一个路障

我有三个模型

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");
}
但是,这显然会产生错误,因为字段是引用而不是属性

我希望能够访问我的字典,比如字段[name]=value

有什么方法可以做到这一点吗?

只需踢出课堂场地和课堂节点数据,然后


如果你有一本字典,这个字段类是从哪里来的?Fluent Nhibernate怎么会知道呢?@Oskarbergren NodeData类有一个由Node_Id和Field_Id组成的复合键。字典本质上是=>不是。根据您的代码,字典是一个很好的工具-在映射中假装不是这样是没有帮助的。这里似乎也有一些循环,我不能完全理解。因此NodeData有一个节点,它有一个字典,应该由NodeData中的字段索引。但是NodeData只有一个字段,那么为什么要使用字典呢?
public NodeMap()
{
    HasMany(x => x.Fields)
        .Table("NodeData")
        .KeyColumn("node_id")
        .AsMap("key")
        .Element("data");
}