powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / непонимание Data Access Layer
8 сообщений из 8, страница 1 из 1
непонимание Data Access Layer
    #37963164
Белый ворон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет. я ньюби в создании приложений баз данных.
может кто-нить немного проконсультировать о Data Access Layer с использованием Typed DataSet? имеются большие сомнения в правильности архитектуры.
база данных банальна: таблицы Customers и Orders, Customers родительская.
по моей первоначальной задумке я хотел сделать чтобы представление (класс формы проще говоря) ничего не "знало" ни о структуре БД, ни о модели.
спроектировал класс доступа к данным так, чтобы в нем были только "низкоуровневые" методы, все параметры и возвращаемые данные - стандартных типов .NET
DAL имеет интерефейс такого рода: DataTable GetAllCustomers(); void CreateCustomer(string name, string address); void CreateOrder(int custId, int amount, string description, DateTime date); и т.д.
датагриды занимаются только отображением, а добавление/редактирование/удаление записей производится с помощью других контролов.
проблема в том что все равно столкнулся с необходимостью явно в класе формы прописывать названия столбцов (например чтобы удалить выбранную запись надо выдернуть из датагрида значение Id и для этого пишу Cells["Id"], тоже самое чтобы скрыть столбец который юзер не должен видеть, или при настройке дочернего датагрида приходится явно задавать имя отношения: dgvDetails.DataMember = "FK_Customers_orders") что не согласуется с изначальной концепцией.
пришла в голову мысль чтобы DAL работал с датагридами сам (конфигурировал и выдергивал значения), но это тоже не комильфо.
как обычно в таких случаях делается?

ps я конечно понимаю, что такое банальное приложение для двух таблиц можно было сделать куда проще.
но у меня в требованиях наличие DAL и валидации. если DAL и можно упростить, то как скрестить валидацию и датагриды при условии что сама валидация не должна находиться в представлении - ума не приложу.
...
Рейтинг: 0 / 0
непонимание Data Access Layer
    #37963228
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белый ворон,

Можно между формой и классом DAL ввести "посредника",
который будет знать как например обзывать столбцы в гриде.
Он же может например, принимать от формы (отдавать в форму)
объект описывающий сучность, внутри себя раскладывать/складывать
сучность на таблицы БД и вызывать соответствующие функции DAL.
...
Рейтинг: 0 / 0
непонимание Data Access Layer
    #37964607
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белый воронпроблема в том что все равно столкнулся с необходимостью явно в класе формы прописывать названия столбцов (например чтобы удалить выбранную запись надо выдернуть из датагрида значение Id и для этого пишу Cells["Id"]

используйте BindingSource



Белый воронтоже самое чтобы скрыть столбец который юзер не должен видеть, или при настройке дочернего датагрида приходится явно задавать имя отношения: dgvDetails.DataMember = "FK_Customers_orders")
всё это делается в проперти гриде, код вообще нужно писать


Белый воронесли DAL и можно упростить, то как скрестить валидацию и датагриды при условии что сама валидация не должна находиться в представлении - ума не приложу.

типизированный DataSet это умеет делать, кроме того вы можете расширить (и/или) наследовать классы адаптеров
...
Рейтинг: 0 / 0
непонимание Data Access Layer
    #37964608
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белый ворон,

но вообще-то я не сторонник датасетов
...
Рейтинг: 0 / 0
непонимание Data Access Layer
    #37966235
Белый ворон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
Проблема решилась сама собой. Это было тестовое задание на позицию джуниора.
Уже устроился в другое место. Там не заставляют использовать датасеты :D
...
Рейтинг: 0 / 0
непонимание Data Access Layer
    #37966262
Белый ворон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и тем не менее...
BarkanМожно между формой и классом DAL ввести "посредника",
который будет знать как например обзывать столбцы в гриде.
Он же может например, принимать от формы (отдавать в форму)
объект описывающий сучность, внутри себя раскладывать/складывать
сучность на таблицы БД и вызывать соответствующие функции DAL.
интересный вариант. но опять же где размещать этого посредника. в клиенте, или в библиотеке доступа?

pationиспользуйте BindingSource
а где хранить экземпляр BS? в классе формы или в DAl'e?
авторвсё это делается в проперти гриде, код вообще нужно писать
оттого что что этот код будет храниться в form.designer.cs он кодом не перестанет быть :)
хотя в-общем да, настроить проще в дизайнере форм, чем рыскать по коду.
но меня больше смущала осведомленность класса формы об устройстве БД.

pationтипизированный DataSet это умеет делать, кроме того вы можете расширить (и/или) наследовать классы адаптеров
вы имеете ввиду события датасета?

pationно вообще-то я не сторонник датасетов
мне они в принципе тоже не очень интересны.
...
Рейтинг: 0 / 0
непонимание Data Access Layer
    #37967150
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белый воронpationиспользуйте BindingSource
а где хранить экземпляр BS? в классе формы или в DAl'e?

на форме
...
Рейтинг: 0 / 0
непонимание Data Access Layer
    #37967153
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белый воронавторвсё это делается в проперти гриде, код вообще нужно писать
оттого что что этот код будет храниться в form.designer.cs он кодом не перестанет быть :)
хотя в-общем да, настроить проще в дизайнере форм, чем рыскать по коду.
но меня больше смущала осведомленность класса формы об устройстве БД.

Откажись от DataSet, сделай свою модель с метаданными
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / непонимание Data Access Layer
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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