2

如何使用按代码映射来映射这些实体:

public class Foo
{
    public virtual IDictionary<Bar, string> Bars { get; set; }
}

public class Bar
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

我找到了这个线程,但它没有映射实体,只有简单的类型。我尝试了许多映射,包括自动映射:

Map(x => x.Bars,
    m =>
    {
        m.Key(k => k.NotNullable(true));
        m.Cascade(Cascade.All);
    },

但是他们中的大多数都会抛出这两个错误:

  1. 外键 (Bars [idx])) 必须具有与引用的主键 (Bars [FooId, idx]) 相同的列数。
  2. 来自表 FoosToStrings 的关联引用了一个未映射的类:System.String。

任何帮助将不胜感激。谢谢。:)

4

1 回答 1

0

我认为这应该有效

Map(x => x.Bars,
    entryMap => entryMap.Key(k => k.Column("foo_id")),
    keymap => keymap.ManyToMany(m => m.Column("bar_Id")),
    elementMap => elementMap.Element(m => m.Column("value")));
于 2013-12-05T14:22:29.017 回答