NHibernate 3.2 Отображение IDictionary по коду - PullRequest
2 голосов
/ 09 сентября 2011

У меня проблема с отображением в IDictionary с использованием новой конфигурации Loquacious.

Вот класс:

public class Person
{
    public Person()
    {
        Description = new Dictionary<int, string>();
    }

    public virtual int Id { get; set; }

    // can be in various languages
    public virtual IDictionary<int, string> Resources { get; set; }
}

public class PersonResource
{
    public virtual string Description { get; set; }
}

Вот сопоставление:

public class TestPersonMap : ClassMapping<TestPerson>
{
    Table("TestPersons");

    Id(c => c.Id, m => m.Generator(Generators.HighLow, gm => gm.Params(new { max_low = 1000 })));

    Map(c => c.Resources, mpm =>
                                {
                        mpm.Table("TestPersonResources");
                        mpm.Key(km => km.Column("Id"));
                     },
            mkr => mkr.Component(cem => cem.Property(p => p.Description)));

Это создает таблицу в базе данных следующим образом:

TestPersons
-----------
Id

TestPersonResources
-------------------
Id
Description
idx

Вопрос в том, как изменить имя столбца 'idx' в таблице TestPersonResources на Lcid?

Я пыталсяглядя на этот пример http://code.google.com/p/codeconform/source/browse/ConfOrm/ConfOrm.UsageExamples/ComponentAsDictionaryKey/Demo.cs

Но я не могу применить его к своей проблеме.

Заранее спасибо!

1 Ответ

2 голосов
/ 10 сентября 2011

После того, как я возился с исходным кодом NHibernate, он, кажется, наконец заработал. Вот что я сделал:

Map(c => c.Resources, mpm =>
                            {
                    mpm.Key(km => km.Column("Id"));
                    mpm.Table("TestPersonResources");
                },
            mkr => mkr.Element(mkm => mkm.Column("Lcid")),
            cer => cer.Component(cem => cem.Property(p => p.Description, pm => pm.Length(100))));
...