powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate, IgnoreProperty используя ClassMap
4 сообщений из 4, страница 1 из 1
NHibernate, IgnoreProperty используя ClassMap
    #37788428
besserebrenik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

Допустим есть класс и в нем есть свойство, которое не нужно мэппить (Barcode)

Код: c#
1.
2.
3.
4.
5.
6.
    public class Product
    {     
        public virtual int Id { get; private set; }
        public virtual string Name { get; set; }
        public string Barcode; 
    }



Для мэппинга я использую Fluent Api и на каждую сущность создаю ClassMap.. Вопрос в том, как заставить NHibernate игнорировать свойство Barcode.

Код: c#
1.
2.
3.
4.
5.
6.
7.
  public class ProductMap : ClassMap<Product>
    {
        public ProductMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);
    }




Вариантов я пока вижу два : использовать auto-mapping (что не желательно) или сделать поле Barcode виртуальным (что тоже не желательно)

Что уже нашел по этой теме тыц и тыц
...
Рейтинг: 0 / 0
NHibernate, IgnoreProperty используя ClassMap
    #37788861
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
besserebrenik,

с трудом понимаю, что вы хотите.
Просто не замапливайте это свойство, и NHibernate не будет его сохранять.
Если речь о том, что NH хочет сделать свойство виртуальным - то этого можно избежать, только отключив Lazy Loading. NHibernate для ленивой загрузки генерирует динамические прокси, и перегружает все public и protected свойства и методы. Для этого они и нужны ему виртуальными.
Так что правильный вариант - сделать свойство виртуальным, и не парится.

PS. Когда используете Fluent NHibernate, то так его и называйте. Иначе сложно понять, что за мифическое Fluent Api.
...
Рейтинг: 0 / 0
NHibernate, IgnoreProperty используя ClassMap
    #37790299
besserebrenik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Доменные модели бывают гораздо сложнее чем

Код: c#
1.
2.
3.
4.
public class Peson{
public virtual string FirstName {get; set;}
public virtual SomeType SomeName {get; set; }
}



Иногда мы и наследуем от типов которые изменить не можем. Да и представьте что вам вверх по иерархии нужно все члены классов объявить виртуальными. И если NHibernate требует, чтобы поля для мэппинга были виртуальными , то проблем нет - пусть будут. Но я задался вопросом, почему поля, которые не требуют мэппинга также должны быть виртуальными и не более того.

Насчет вашего совета - спасибо, иного выхода не вижу..Просто хотел разобраться с вопросом. Пока ни в каких источниках найти ответ не могу. Читать исходники этого проекта мне не по силам
...
Рейтинг: 0 / 0
NHibernate, IgnoreProperty используя ClassMap
    #37790729
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
besserebrenikПока ни в каких источниках найти ответ не могу
Еще раз, NHibernate при запуске приложения создаёт динамическую сборку с прокси-типами ваших объектов. При этом он наследует все замапленные типы, и переопределяет (override) в них все public и protected свойства. Чтобы он мог их перегрузить - они должны быть виртуальными.
Перегружает их в целях ленивой загрузки.
Посмотрите под отладчиком загруженную из базы сущность. Увидите, что это не ваш тип, а отнаследованный от него прокси-тип.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate, IgnoreProperty используя ClassMap
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]