Игнорировать столбец, используя отображение по коду в HNibernate - PullRequest
1 голос
/ 05 октября 2011

Я использую отображение по коду в NHibernate.Я получил класс с несколькими свойствами.Один из них не связан с какими-либо столбцами в БД, но по-прежнему имеет методы получения и установки.

Я использую ConventionModelMapper, а не ModelMapper.Первый предполагает, что все свойства сопоставлены.

Как я могу сказать NHibernate игнорировать его?

Ответы [ 3 ]

5 голосов
/ 26 июля 2013

Мне проще просто создать атрибут, прикрепить этот атрибут к свойству и проверить его в методе mapper.IsPersistentProperty. Примерно так:

class IngnoreAttribute : Attribute
{
}

class Foo
{
    [Ignore]
    public virtual string Bar { get; set; }
}

mapper.IsPersistentProperty((mi, declared) => mi.GetCustomAttribute<IgnoreAttribute>() == null);

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

3 голосов
/ 05 октября 2011

Почему бы не сопоставить свойства, которые вы хотите, и оставить те, которые не нужно отображать

чек это

Вы можете управлять сохранением ConventionModelMapper следующим образом:

mapper.BeforeMapProperty += (mi, propertyPath, map) =>
{
    // Your code here using mi, propertyPath, and map to decide if you want to skip the property .. can check for property name and entity name if you want to ignore it
};

Лучший ответ будет:

mapper.IsPersistentProperty((mi, declared) =>
                                             {
                                                 if (mi.DeclaringType == typeof (YourType) && mi.Name == "PropertyNameToIgnore")
                                                     return false;
                                                 return true;
                                             });
0 голосов
/ 05 октября 2011

Если вы не упомянете свойство, которое следует игнорировать в вашем отображении NHibernate, NHibernate проигнорирует его.

...