Свободный NHibernate - тип переопределения для одного определенного свойства в одном конкретном классе? - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть класс, у которого есть свойство пароля, которое я хочу хранить в зашифрованном виде в БД. Свойство является строковым типом, и у меня есть пользовательский тип EncryptedStringType, который я хочу использовать NHibernate для сопоставления этого с базой данных. Вот мой соответствующий код автоответчика:

var mappings = AutoMap.AssemblyOf<Business>()
    .Where(x=>x.IsSubclassOf(typeof(EntityBase)))
    .IgnoreBase(typeof(EntityBase))
    .Conventions.Add
        (
            ConventionBuilder.Id.Always(x =>
                x.GeneratedBy.HiLo(HILO_TABLE, HILO_COLUMN, HILO_MAX_LO)),
            ConventionBuilder.HasMany.Always(x => x.Cascade.AllDeleteOrphan()),
            Table.Is(o => Inflector.Pluralize(o.EntityType.Name)),
            PrimaryKey.Name.Is(o => "Id"),
            ForeignKey.EndsWith("Id"),
            DefaultLazy.Always(),
            DefaultCascade.All()
        );

Я не могу понять синтаксис для переопределения типа для свойства UserPassword бизнес-класса. Я думал, что смогу сделать что-то с переопределениями, такими как:

mappings.Override<Business>(map=> /* Not sure what to do here */);

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Вы всегда можете создать класс переопределения отображения. Будут применяться любые соглашения, которые еще могут быть применены, но вы можете в основном указать сопоставления аналогично ClassMap, который переопределяет соглашения по умолчанию.

Используя вызов mappings.Override (), он будет выглядеть примерно так:

mappings.Override<Business>(map=>map.Map(x=>x.UserPassword).CustomType(typeof(EncryptedStringType)));
0 голосов
/ 01 апреля 2011

Сам нашел ответ.

mappings.Override<Business>(map =>
{
    map.Map(x => x.UserPassword).CustomType<EncryptedStringType>();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...