powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как скрестить персистентные и обычные классы?
7 сообщений из 7, страница 1 из 1
Как скрестить персистентные и обычные классы?
    #36730812
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги!
Есть задача (в буквальном смысле).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Task
{
  public virtual int ID { get; protected set; }
  public virtual string NAME { get; set; }
  public virtual int STAGE_ID { get; set; }
  public virtual int PRIORITY_ID { get; set; }

  public virtual Stage Stage { get; set; }
  public virtual Priority Priority { get; set; }

  public Task() {}
}

Также есть персистентный класс Stage и обычный Priority (описывать не буду).
Первый из них корректно примаплен к Task через STAGE_ID и всегда корректно прописывается в его свойство Stage при получении экземпляра Task из БД или списка объектов Task из БД.

Как организовать заполнение свойства Priority объекта типа Task при извлечении последнего из БД? Т.е. понятно, что класс Priority не прописан в БД, но не хотелось бы совершать дополнительные телодвижения каждый раз после обращения к БД за объектом или списком Task.
Внутри беспараметрического конструктора Task() организовать создание Priority не удалось - свойства Task внутри конструктора не инициализированы...
...
Рейтинг: 0 / 0
Как скрестить персистентные и обычные классы?
    #36731054
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Не совсем понятно как Priority относится к базе данных, но что мешает его
лениво инициализировать прямо в акцессоре get Priority
...
Рейтинг: 0 / 0
Как скрестить персистентные и обычные классы?
    #36731224
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Priority никак не относится к базе данных.
Поэтому я не могу сообразить, как его инициализировать для каждого экземпляра Task, полученного из БД.

Парой строчек кода не намекнешь?
...
Рейтинг: 0 / 0
Как скрестить персистентные и обычные классы?
    #36731250
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

ну как то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 Priority priority_;
       public virtual Priority Priority
        {
            get
            {

                if (priority_ == null)
                {
                    priority_ = new Priority();
                }

                return priority_;
            }
            set { priority_ = value; }
        }
...
Рейтинг: 0 / 0
Как скрестить персистентные и обычные классы?
    #36731280
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Вновь созданный Priority нужно проинициализировать в соответствии с PRIORITY_ID владельца - Task.
Напр. если
Код: plaintext
Task.PRIORITY_ID == 1
то
Код: plaintext
Task.Priority = new Priority { ID = 1, NAME = "Максимальный" }
...
Рейтинг: 0 / 0
Как скрестить персистентные и обычные классы?
    #36731285
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

ну и что, только снаружи надо делать проверку на нуль, или выкидывать исключение

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 Priority priority_;
       public virtual Priority Priority
        {
            get
            {

                if (priority_ == null&& this.PRIORITY_ID == 1)
                {
                    priority_ = new Priority{ ID = 1, NAME = "Максимальный" };
                }

                return priority_;
            }
            set { priority_ = value; }
        }
...
Рейтинг: 0 / 0
Как скрестить персистентные и обычные классы?
    #36731314
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
Коллега! Конгениально! Все сработало.
Надо бы мне освежить свои и без того скудные знания в ООП ;)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как скрестить персистентные и обычные классы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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