Какой подход лучше загружать данные из читателя в объекты - PullRequest
0 голосов
/ 07 марта 2011

Посмотрите на приведенный ниже код для загрузки списка

while (dataReader.Read())
            {
                City city;
                if (City.TryLoad(dataReader, out city))
                {
                    defaultCities.Add(city);
                }
            }

TryLoad читает программу чтения и загружает объект данных и возвращает true в случае успеха и false в случае неудачи. Мне сказали, что выгода была в том, что код не будет выдавать ошибку, если код по какой-либо причине завершится с ошибкой при загрузке объекта. Таким образом, если одна строка данных повреждена, то она не добавляется к соединению по умолчанию. Более того, при загрузке при загрузке мы можем записать, какой конкретный ряд выдал и исправить ошибку.

С другой стороны, подход, который я использовал ранее, заключался в простой загрузке объектов и добавлении их в коллекцию.

 while (dataReader.Read())
                {
                    City city = new City();
                    city.Name = reader["Name"].ToString();
                    .
                    .
                    defaultCities.Add(city)

                }

Хотя второй подход может потерпеть неудачу из-за искаженного значения в базе данных, разве вы не хотите этого? Разве ловить ошибки из-за пропущенного значения становится трудно в первом подходе?

Просто хотел узнать мнение других о плюсах и минусах двух подходов.

Также, пожалуйста, помогите пометить вопрос соответствующим образом.

Ответы [ 3 ]

1 голос
/ 07 марта 2011

Если вы можете разрешить исключение для неверных данных, лучше использовать второй подход. Это часто встречается в ситуациях, когда администраторы контролируют качество данных.

Однако часто верно, что администраторы не могут гарантировать качество данных. В этих случаях часто требуется, чтобы приложение корректно обрабатывало искаженные данные. Когда возникает такая необходимость, первый подход - это элегантный способ сделать это.

1 голос
/ 07 марта 2011

Вы совершенно правы, если что-то не так с данными, которые я бы хотел узнать как можно скорее.

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

0 голосов
/ 07 марта 2011

второй. Мне нравится, так как он намного чище и проще в обслуживании.

Вы также можете загружать данные прямо из считывателя данных в переменные и тестировать перед загрузкой в ​​ваши классы - DateTimes - хорошие примеры, я бы предложил использовать для них TryParse ():

DateTime contentLastModified;
if (!DateTime.TryParse(dr["LastModified"].ToString(), out contentLastModified))
{
  contentLastModified = MyApp.Common.Constants.SystemTypeValues.NullDate;
}
...