2012-03-26 2 views
2

Как я могу сопоставить эти Сущности, используя отображение-на-код:Отображение NHibernate по коду: Как сопоставить IDictionary?

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; } 
} 

Я нашел this thread, но не отображает объект, только простые типы. Я перепробовал много отображений, в том числе Автоотображение:

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

Но большинство из них бросают эти две ошибки:

  1. Foreign ключ (Bars [IDX])) должны иметь одинаковое число столбцов в качестве ссылочного первичного ключа (Bars [FooId, idx]).
  2. Ассоциация из таблицы FoosToStrings относится к классу unmapped: System.String.

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

+0

Это приводит к индекс-многие-к-любому отображению, которое я считаю, есть некоторые проблемы в FluentNHibernate. См. Этот связанный вопрос с обходным решением. http://stackoverflow.com/questions/8542298/fluent-nhibernate-index-many-to-many. –

+0

Я не использую Fluent. Я использую отображение по коду. – Yogesh

+0

Извинения. Необходимо более внимательно прочитать вопрос. –

ответ

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"))); 
Смежные вопросы