Как стать автором
Обновить

Комментарии 14

Велосипед какой-то… Может лучше linq?
var db = new DatabaseContext();
var results = from product in products where is_visible = 1 select product;
// do something?
поправка: from p in db.products where is_visible = 1 select p;
К сожалению, с linq я ещё плохо знаком, поэтому мне не совсем понятно, что такое DatabaseContext.
Ознакомсья, сократишь кол-во строк с 90 до 5ти.

А вообще, даже если бы ты использовал Typed DataSet, у тебя и с ним было бы не больше 5ти строк. Посмотри на инструменты вокруг — уже давно всё есть для работы с бд. И заново писать один из них не имеет смысла. Это одна из проблем начинающих — начинают изобретать велосипеды. Если работаешь, судя по всему, уже 10 месяцев программистом — пора бы уже понять :)

Краткий экскурс в linq: www.gotdotnet.ru/LearnDotNet/DotNet30/441508.aspx
Как только вникнешь — гугли LINQ to SQL :)
До последнего момента приходилось иметь дело исключительно с .net 2.0. Именно поэтому мне и было интересно мнение более опытных людей.
Для начала я бы отказался от типизированного приватного конструктора.
Далее написал бы класс для доступа к базе (аля слой data access). У класса есть метод: GetProducts(), который делает запрос в базу данных, получает результат и возвращает его в виде коллекции сущностей. Всё просто и понятно и легко тестируемо. Далее под ваши нужды уже совершенствование.
Я уже говорил чуть выше про typed dataset :) Он ещё с 1.x версий существует :)
Почитайте книжку — Мартин Фаулер «Архитектура корпоративных программных приложений».
я бы прикрутил ADO.NET Entity Framework.
Оно само по табличке и классы сгенерит, и запись-чтение сделает, и интерфейс удобный предоставит. Чтобы дальше приходилось только писать что-то вроде
context.ProductSet.Where("is_visible").Select(reader => new
{
ID = (int) reader[0],
Name = (string) reader[1]
}).ToList();

Довольно любопытная штука, правда со своими выкрутасами.
Упс, скопипастил вас, а это дело небогоугодное. Нужно
context.ProductSet.Where(«is_visible»).Select(reader => new
new
{
ID = Id,
Name = Name
}).ToList();
Каюсь.
Срочно читать про ORM, Linq To SQL и EntityFramework, ибо вы сейчас такие велосипеды наизобретаете…
Как уже написали лучше использовать готовый ORM (не обязательно Linq2Sql или EF). Вы потратите на изучение меньше времени, чем не генерацию своего, получите знания для других проектов и вам не нужно будет поддерживать лишний самописный код. К тому же, EF к примеру через провайдеры способен работать с десятком баз данных. Ваш код, похоже, ориентирован только на MS SQL Server.

К тому же, подумайте о потомках! Тянуть весь ваш самописный ORM будет очень тяжело любому другому программисту, который, я уверен, первым же делом решит переводить проект на рельсы другого общедоступного ORM.
Что вы все заладили, смотри ОРМ, смотри ОРМ. ОРМ это не панацея. Буксовать будет вся ОРМ в большем проекте. Гибкости там мало. А если поменяется схема ДБ то вообще не приятно становится.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории