В какой раздел я должен поместить свой код SqlDataReader? - PullRequest
0 голосов
/ 06 мая 2009

Я довольно новичок в c # и пытаюсь написать n-уровневое веб-приложение. Чтобы убедиться, что я разместил логику и код в нужном месте, у меня просто вопрос о том, куда поместить мой код.

У меня есть три основных раздела:

  1. Код DataAccess - внутри папки с именем «BusinessLogic» внутри моей папки App_Code.

  2. Код бизнес-логики - внутри папки с именем «DataAccess» внутри моей папки App_Code.

  3. Уровень представления - все пользовательские интерфейсы

Если, например, мне нужно написать SqlDataReader для извлечения записей из моей базы данных, где я мог бы физически написать код? В БЛЛ или ДАЛ?

IE. Из уровня представления я вызываю код BLL.

ContentBLL content = new ContentBLL();
//some code to call the BLL layer...

Здесь я начинаю путаться. На уровне логики бизнес-уровня, который я вызываю, я пишу здесь код SqlDataReader или создаю еще один шаг и пишу код SQlDataReader на уровне доступа к данным.

IE. В BLL я должен добавить метод, который называется DAL? * 1026 например *

public static ContentBLL GetPageContent(intID)
{
return ContentDAL.GetItem(ID)
}

и затем в моем DAL у меня есть метод для выполнения фактического SqlDataReader * 1029 например *

public static ContentBLL GetItem(int id)
{
//return the SqlDataReader code...
}

Я пытался извлечь уроки из учебников на веб-сайте asp.net, однако для DAL в учебном пособии вместо них используются наборы данных. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 06 мая 2009

Мой типичный подход - это то, что я в шутку называю 2,5-уровневым методом.

В этом методе я использую следующий подход:

                Presentation Layer

                Businesss Object Layer / Data Serialization

                Database Service Layer

Каждый бизнес-объект на бизнес-уровне имеет конструктор, который принимает IDataReader. Этот читатель затем читается для заполнения объекта.

Уровень базы данных оборачивает все запросы на доступ к БД и возвращает читателей.

Хотя это не так чисто, как хотелось бы некоторым, альтернативой является создание тупых контейнерных классов для распределения данных между уровнями, и я предпочитаю просто использовать IDataReader.

Кроме того, используя IDataReader, а не SqlDataReader, я все еще слабо связан с моим DAL и могу реализовать любую форму персистентности, не только SQLServer.

0 голосов
/ 06 мая 2009

Это звучит для меня как классический случай чрезмерной инженерии.

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

Постарайтесь узнать немного больше о ASP.NET и не переживайте из-за семантики. Если вы будете непредвзяты и разрешите рефакторинг своего кода, вы, скорее всего, сможете сами дать ответ на свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...