|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
привет. я ньюби в создании приложений баз данных. может кто-нить немного проконсультировать о 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 и можно упростить, то как скрестить валидацию и датагриды при условии что сама валидация не должна находиться в представлении - ума не приложу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 00:06 |
|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
Белый ворон, Можно между формой и классом DAL ввести "посредника", который будет знать как например обзывать столбцы в гриде. Он же может например, принимать от формы (отдавать в форму) объект описывающий сучность, внутри себя раскладывать/складывать сучность на таблицы БД и вызывать соответствующие функции DAL. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 05:33 |
|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
Белый воронпроблема в том что все равно столкнулся с необходимостью явно в класе формы прописывать названия столбцов (например чтобы удалить выбранную запись надо выдернуть из датагрида значение Id и для этого пишу Cells["Id"] используйте BindingSource Белый воронтоже самое чтобы скрыть столбец который юзер не должен видеть, или при настройке дочернего датагрида приходится явно задавать имя отношения: dgvDetails.DataMember = "FK_Customers_orders") всё это делается в проперти гриде, код вообще нужно писать Белый воронесли DAL и можно упростить, то как скрестить валидацию и датагриды при условии что сама валидация не должна находиться в представлении - ума не приложу. типизированный DataSet это умеет делать, кроме того вы можете расширить (и/или) наследовать классы адаптеров ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 18:57 |
|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
Белый ворон, но вообще-то я не сторонник датасетов ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 18:58 |
|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
Всем спасибо. Проблема решилась сама собой. Это было тестовое задание на позицию джуниора. Уже устроился в другое место. Там не заставляют использовать датасеты :D ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 18:08 |
|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
и тем не менее... BarkanМожно между формой и классом DAL ввести "посредника", который будет знать как например обзывать столбцы в гриде. Он же может например, принимать от формы (отдавать в форму) объект описывающий сучность, внутри себя раскладывать/складывать сучность на таблицы БД и вызывать соответствующие функции DAL. интересный вариант. но опять же где размещать этого посредника. в клиенте, или в библиотеке доступа? pationиспользуйте BindingSource а где хранить экземпляр BS? в классе формы или в DAl'e? авторвсё это делается в проперти гриде, код вообще нужно писать оттого что что этот код будет храниться в form.designer.cs он кодом не перестанет быть :) хотя в-общем да, настроить проще в дизайнере форм, чем рыскать по коду. но меня больше смущала осведомленность класса формы об устройстве БД. pationтипизированный DataSet это умеет делать, кроме того вы можете расширить (и/или) наследовать классы адаптеров вы имеете ввиду события датасета? pationно вообще-то я не сторонник датасетов мне они в принципе тоже не очень интересны. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 18:19 |
|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
Белый воронpationиспользуйте BindingSource а где хранить экземпляр BS? в классе формы или в DAl'e? на форме ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2012, 12:24 |
|
непонимание Data Access Layer
|
|||
---|---|---|---|
#18+
Белый воронавторвсё это делается в проперти гриде, код вообще нужно писать оттого что что этот код будет храниться в form.designer.cs он кодом не перестанет быть :) хотя в-общем да, настроить проще в дизайнере форм, чем рыскать по коду. но меня больше смущала осведомленность класса формы об устройстве БД. Откажись от DataSet, сделай свою модель с метаданными ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2012, 12:26 |
|
|
start [/forum/topic.php?fid=17&fpage=31&tid=1350240]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 148ms |
0 / 0 |