Задать вопрос

Трехслойная архитектура для ADO.NET, проблемы при возвращении DBNull и мелочи

Здравствуйте. Прочитав эту статью про трехслойную архитектуру доступа к данным, решил уже наконец научиться писать всё нормально и по правилам. Всё пока хорошо но есть пара вопросов:
1. Если на этом этапе:

UserVO userVO = new UserVO();
            DataTable dataTable = new DataTable();

            dataTable = _userDAO.searchByName(name);
            foreach (DataRow dr in dataTable.Rows)
            {
                userVO.idUser = Int32.Parse(dr["t01_id"].ToString());
                userVO.firstname = dr["t01_firstname"].ToString();
                userVO.lastname = dr["t01_lastname"].ToString();
                userVO.email = dr["t01_email"].ToString();
            }
            return userVO;

Если значение с базы приходит DBNull то присваивать к объекту модели данные которые не могут принимать такие значения (Например: int , DateTime не могут быть null), то какие проверки лучше сделать и что возвращать в объект модели ?

2. Если база возвращает несколько строк (например в контрол DataGridView или просто список) то я добавляю их в List< T >, где T - класс модели (Model Layer или как в примере выще UserVO). Правильно ли я делаю ?
  • Вопрос задан
  • 3324 просмотра
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
1. Использовать в модели Nullable.
2. Да.

Но, ИМХО, я бы присмотрелся к Entity Framework, NHibernate или другим ORM, так как ADO, хоть и работает быстро, но сейчас годится только для проектов на стадии поддержки. Если писать все заново (как я понимаю у вас), то лучше сделать шаг в современность. Из плюсов: значительно меньше нужно писать руками кода по работе с БД, LINQ.
EntityFramework
NHibernate
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы