Отображение NHibernate по коду: Как отобразить IDictionary? - PullRequest
2 голосов
/ 26 марта 2012

Как можно сопоставить эти сущности с помощью сопоставления по коду:

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.

Любая помощь будет весьмаоценили.Благодарю.:)

1 Ответ

0 голосов
/ 05 декабря 2013

я думаю, что это должно работать

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")));
...