Свободно смешанные картографические свойства NHibernate - PullRequest
0 голосов
/ 09 сентября 2010

Я пытаюсь использовать свободный nhibernate для автоматического сопоставления большинства свойств класса, а затем вручную отображать 1 или 2 свойства этого же класса (без необходимости вручную сопоставлять все другие переменные в карте классов).

У меня есть класс с парой дюжин свойств, но одним из этих свойств является строка, которая должна быть длинной длины.

Вот пример:

Класс Person имеетполя: ID, имя, фамилия, описание и несколько десятков других полей.

Я бы автоматически сопоставил класс, но я хочу, чтобы 'description' было длинной строкой, а не nvarchar (255).

Итак, я пытаюсь:

открытый класс PersonMap: ClassMap {public PersonMap () {Map (x => x.description) .Length (4000);}}

, но это не автоматически сопоставляет все другие свойства (исключение выдается).Он ожидает объявления для каждого свойства.

Есть ли способ выполнить то, что я пытаюсь сделать?

Если кому-то это нужно, вот код, который я использую для объявления конфигурации:

FluentConfiguration cfg = Fluently.Configure()
.Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2000.ConnectionString(Cn));
        AutoPersistenceModel mdl = 
            AutoMap.Assembly(System.Reflection.Assembly.GetExecutingAssembly());

        cfg.Mappings(m => m.AutoMappings.Add(mdl.Where(type =>
        type.Namespace != null && type.Namespace.ToLower() == strNamespace.ToLower() )));

Спасибо!

1 Ответ

1 голос
/ 09 сентября 2010

Хорошо, я понял это.Есть метод с именем 'override', который я могу использовать при объявлении конфигурации, и там я могу указать все переопределения для определенных свойств:

AutoPersistenceModel mdl = AutoMap.Assembly(System.Reflection.Assembly.GetExecutingAssembly());

mdl.Override<MyNamespace.Person>(map =>
{
    map.Map(x => x.description).Length(4000);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...