|
MVVM без ORM
|
|||
---|---|---|---|
#18+
Такой вопрос: по правильному, если не использовать ORM, запросы к базе должны выполняться на уровне модели? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2013, 20:48 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
bdfyyТакой вопрос: по правильному, если не использовать ORM, запросы к базе должны выполняться на уровне модели?Нет, на уровне конкретной реализации репозитоия А это обычно data layer (data access layer, data mapping layer). Но если хотите по быстрому, можете и в модель запихать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 07:56 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
Приложения WPF с шаблоном проектирования MVVM. Модель данных и репозиторий. Джош СмитДанные должны откуда-то приходить и где-то храниться. В этом приложении экземпляр класса CustomerRepository загружает и хранит все объекты Customer. Так получилось, что он загружает данные клиентов из файла XML, но вообще тип внешнего источника данных несущественен. Данные могу поступать из базы данных, веб-службы, именованного канала, файла на диске или от почтовых голубей: это просто не имеет значения. Если у вас есть объект .NET с данными, независимо от того, откуда они, шаблон MVVM может вывести эти данные на экран. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 08:05 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
Спасибо! skyANAНет, на уровне конкретной реализации репозитоия А это обычно data layer (data access layer, data mapping layer). Но если хотите по быстрому, можете и в модель запихать. Значит правильно мыслю skyANA Приложения WPF с шаблоном проектирования MVVM. Модель данных и репозиторий. Читал, тяжеловато пока переваривается и не все складывается в "стройные ряды", надо еще раз перечитать, может после сейчас лучше сложится ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 11:23 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
skyANAbdfyyТакой вопрос: по правильному, если не использовать ORM, запросы к базе должны выполняться на уровне модели?Нет, на уровне конкретной реализации репозитоия А это обычно data layer (data access layer, data mapping layer). Но если хотите по быстрому, можете и в модель запихать. Я в button1_Click всегда делаю - работает! )) skyANA Приложения WPF с шаблоном проектирования MVVM. Модель данных и репозиторий. Джош СмитДанные должны откуда-то приходить и где-то храниться. В этом приложении экземпляр класса CustomerRepository загружает и хранит все объекты Customer. Так получилось, что он загружает данные клиентов из файла XML, но вообще тип внешнего источника данных несущественен. Данные могу поступать из базы данных, веб-службы, именованного канала, файла на диске или от почтовых голубей: это просто не имеет значения. Если у вас есть объект .NET с данными, независимо от того, откуда они, шаблон MVVM может вывести эти данные на экран. Из-за старости это уже во многом вредная статья. Её править и улучшать давно надо. Например, про этот самый ORM не сказано. Я раньше, как дурак, делал репозиторий поверх ORM, сгенеренной EF. Или ещё вот там строками имена параметров передаются, когда давно уже можно написать через выражения и лямбды. И ещё, наверняка, есть нюансы. Я бы советовал более современный и подробный вариант http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx (и ещё 6-я глава там... и вообще лучше там всё прочитать). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 14:19 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
Кстати, офигенно, что они сделали бесплатную книгу в ПДФ с гиперссылочным оглавлением и подсвеченным кодом. Когда инета нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 14:22 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
user7320бесплатную Ой, ошибся. Но найти не проблема. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 14:23 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
user7320Я в button1_Click всегда делаю - работает! ))Тро-ло-ло. батон клик в WPF, пошутил, так пошутил user7320Из-за старости это уже во многом вредная статья. Её править и улучшать давно надо. Например, про этот самый ORM не сказано. Я раньше, как дурак, делал репозиторий поверх ORM, сгенеренной EF.Дак так и надо. И раньше и сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 14:48 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
P.S.: иногда лучше жевать, чем говорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 14:49 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
bdfyyСпасибо! skyANAНет, на уровне конкретной реализации репозитоия А это обычно data layer (data access layer, data mapping layer). Но если хотите по быстрому, можете и в модель запихать. Значит правильно мыслюА как именно: в сторону data layer или "по быстрому"? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 14:50 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
skyANAА как именно: в сторону data layer или "по быстрому"? Код: plaintext 1. 2. 3. 4. 5. 6.
Собственно, если я все правильно понимаю, "ViewModel" запрашивает у "Data Access" объекты "Model" "Model" - ничего не знает об остальных "Data Access" - осуществляет загрузку данных и сохранение ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 15:34 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
user7320... Я бы советовал более современный и подробный вариант http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx (и ещё 6-я глава там... и вообще лучше там всё прочитать). user7320Кстати, офигенно, что они сделали бесплатную книгу в ПДФ с гиперссылочным оглавлением и подсвеченным кодом. Когда инета нет.user7320user7320бесплатную Ой, ошибся. Но найти не проблема. )) Там в Source вроде была chm этого дела, а еще на хабре есть перевод: http://habrahabr.ru/post/176851/ ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 15:56 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
bdfyyа еще на хабре есть перевод: http://habrahabr.ru/post/176851/ По-русски читать - только время зря терять. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 16:49 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
Еще такие вопросы возникли: - в какой момент ORM обычно обновляет данные в модели, если приложение многопользовательское. т.е. несколько пользователей используют один и тот же набор объектов (например, подгруженных из БД), один изменил объект, когда узнают остальные клиенты. - как обычно организовывается работа с объектом в разных окнах, одного приложения. Окна могут быть показаны в разной последовательности или одновременно. Хочется иметь один экземпляр модели для обоих окон или это не верно? (вопрос наверно не для этой ветки) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:56 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
user7320По-русски читать - только время зря терять. )) Согласен, но на начальном этапе, и не полностью свободном английском, неплохое подспорье ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:57 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
bdfyy- в какой момент ORM обычно обновляет данные в модели, если приложение многопользовательское. т.е. несколько пользователей используют один и тот же набор объектов (например, подгруженных из БД), один изменил объект, когда узнают остальные клиенты.После вызова метода Refresh :) О какой ORM речь? bdfyy- как обычно организовывается работа с объектом в разных окнах, одного приложения. Окна могут быть показаны в разной последовательности или одновременно. Хочется иметь один экземпляр модели для обоих окон или это не верно? (вопрос наверно не для этой ветки)Хотите - имейте. Можете реализовать Registry (Реестр) , а можете по простому. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 22:19 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
skyANA...О какой ORM речь? В том-то и беда что придется самому писать эти механизмы skyANA... а можете по простому. это как? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 22:47 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
bdfyyЕще такие вопросы возникли: - в какой момент ORM обычно обновляет данные в модели, если приложение многопользовательское. т.е. несколько пользователей используют один и тот же набор объектов (например, подгруженных из БД), один изменил объект, когда узнают остальные клиенты. - как обычно организовывается работа с объектом в разных окнах, одного приложения. Окна могут быть показаны в разной последовательности или одновременно. Хочется иметь один экземпляр модели для обоих окон или это не верно? (вопрос наверно не для этой ветки) https://www.google.ru/?gws_rd=cr&ei=wHUyUuzoF-mk4gS6tICQDA#newwindow=1&q=entity framework concurrency ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 06:18 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
Если Скайана имел ввиду ещё и свой репозиторий с конкуренцией и прочими плюшками, то я не зря сказал, что "я как дурак реализовывал". Тут тема недавно была по обсуждению своего репозитория, из которой я вынес вывод, что для простых и даже средних приложений ORM, создаваемое EF, вполне сойдёт за репозиторий. А если по-нормальному реализовывать, то это "не для средних умов". В смысле, опыт нужен, и вообще. Если что, классы ORM у EF являются частичными (парциальными), так что можно дописать свою функциональность в других файлах, не боясь, что при перегенерации ORM весь ваш код будет потерян. А у Джоша Смита приведён пример репозитория ну очень простого. Такого, который в реальной жизни не нужен, т. к. даже хуже энтитифреймворковского ORM. Это у него была такая "затычка", т. к. цель-то была не про репозиторий рассказать, а про MVVM. Для реализации репозитория есть спецстатьи, которые обычно объединяются с шаблоном Unit Of Work и т. д. И опять же, там обычно всё сильно просто. Настолько, что ORM от EF с возможностью дописывания парциальных классов опять тут может служить вполне нормальной заменой, а чаще всё равно превосходит по возможностям. Так что или писать нормально (на что у вас уйдёт больше месяца, и то, если вы с опытом), или пока забыть о самописных и пользоваться готовыми ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 06:29 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
bdfyyuser7320По-русски читать - только время зря терять. )) Согласен, но на начальном этапе, и не полностью свободном английском, неплохое подспорье С таким подходом начальный этап никогда не кончится. )) Я учился читать (пока всего лишь читать, ибо разговор и письмо это не одно и то же, что читать - это я делаю гораздо хуже) именно при "не полностью свободном английском". Первый год было трудно, но потом гораздо легче, и чейчас, когда уже третий год практикуюсь, почти свободно (иногда лазию в словарь на планшете-телефоне, с которых и читаю - секундное дело) читаю статьи по научной тематике (научпопу, если точнее - Phys.org и т. п.), программированию, из Википедии и пр. При этом стараюсь именно на английском читать, если есть многоязычный вариант. И с фильмами и прочим лучше делать то же самое. Через нехочу. А принцип обучения у меня примерно такой же, как когда я русский изучал. Когда я был маленький, я слушал речь родителей и вообще людей, и учился говорить. Подрос и стал читать по складам (выучили дома и в детсаде). В первом классе уже сносно читал, а во втором читал уже всякие романы. Кроме того, большой объём прочтённой литературы, содержащей минимум ошибок (проверенной корректором) улучшает грамотность письма, т. к. зачастую грамотность - простое запоминание шаблонов слов и их употребления. Много читаешь грамотной литературы - много значешь шаблонов. Редко кто про себя проговаривает правило, чтобы определить, как правильно писать тут или там - в основном на запомненных шаблонах написания-употребления всё держится. С английским всё точно также. Разница только в том, что у меня речевая практика почти отсутствует, т. к. мне не с кем разговаривать и носителей языка рядом со мной нет. Но вот чтение я форсировал чрезвычайно, а это уже немало. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 06:40 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
user7320Если Скайана имел ввиду ещё и свой репозиторий с конкуренцией и прочими плюшками, то я не зря сказал, что "я как дурак реализовывал". Тут тема недавно была по обсуждению своего репозитория, из которой я вынес вывод, что для простых и даже средних приложений ORM, создаваемое EF, вполне сойдёт за репозиторий. А если по-нормальному реализовывать, то это "не для средних умов". В смысле, опыт нужен, и вообще. Если что, классы ORM у EF являются частичными (парциальными), так что можно дописать свою функциональность в других файлах, не боясь, что при перегенерации ORM весь ваш код будет потерян. А у Джоша Смита приведён пример репозитория ну очень простого. Такого, который в реальной жизни не нужен, т. к. даже хуже энтитифреймворковского ORM. Это у него была такая "затычка", т. к. цель-то была не про репозиторий рассказать, а про MVVM. Для реализации репозитория есть спецстатьи, которые обычно объединяются с шаблоном Unit Of Work и т. д. И опять же, там обычно всё сильно просто. Настолько, что ORM от EF с возможностью дописывания парциальных классов опять тут может служить вполне нормальной заменой, а чаще всё равно превосходит по возможностям. Так что или писать нормально (на что у вас уйдёт больше месяца, и то, если вы с опытом), или пока забыть о самописных и пользоваться готовыми ORM.Запомни. ORM - это не репозиторий! Тупо по определению. Ты своими рассуждениями только вводишь неопытных разработчиков в заблуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 07:45 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
bdfyyskyANA...О какой ORM речь? В том-то и беда что придется самому писать эти механизмыКакие механизмы? Опишите задачу. bdfyyskyANA... а можете по простому. это как?Держать модель в памяти, а во View, где требуется работать с её частью, отдавать эту часть по ссылке. Если Вы объясните, что за Окна и в какой последовательности они могут открываться, то можно будет что-то сказать конкретнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 07:53 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
Есть проект написанный на связке: Delphi + FireBird. Написан по старинке, без ORM с прямыми запросами к БД в окнах. По разным причинам принято решение Delphi "сменить" на WPF от Микрософта. Базу трогать нельзя, совместимость. Пробовал натравить на базу EF он вешается, т.е. сгенерить до конца не может. Да и в сгенеренном много чего не хватает. Все усугубляется тем, что объекты хранимые в таблице могут выступать как схожими так и разными. Поясню: Есть таблица А и В. В таблице А хранится объект АА, в таблице В объекты ВА и ВВ. Объект ВА может быть контейнером для ВВ, но при этом объект АА может быть контейнером для обеих объектов ВА и ВВ. И с точки зрения объекта АА между объектами ВА и ВВ нет разницы. Причем объекты ВА и ВВ могут хранится в разных базах, которые могут редактироваться независимо в разных местах. Как натравить NHibernate на базу не понял. По любому понял (на моем уровне знания данных ОRM), что придется многое допиливать руками. По поводу клиента. Объекты ВА и ВВ могут быть соответственно отображены скопом, например в виде таблицы, или в виде зависимости какой нибудь графической схемой. Эти окна абсолютно не связаны с точки зрения использования. т.е. один клиент может редактировать только в одном окне, другой только в другом, а третий в обеих окнах сразу. Все это конечно упрощенно. Надеюсь, что нормально объяснил. Готов добавить пояснения еще. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 09:04 |
|
MVVM без ORM
|
|||
---|---|---|---|
#18+
skyANAЗапомни. ORM - это не репозиторий! Тупо по определению. Ты своими рассуждениями только вводишь неопытных разработчиков в заблуждение. То, что генерит EF - "как бы репозиторий". Его можно использовать вместо простого репозитория. Как-то так? Вот тот же Джош Смит, да и другие писатели статей, приводят примеры реализации репозитория со стандартным набором методов получить-записать-удалить-проверитьНаличие-получитьПолныйСписок и т. п. для каждой сущности. ORM от EF содержит то же самое, плюс ещё в пять раз больше, плюс проверен и на баги кучей профи. Ну и чем не репозиторий? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 10:54 |
|
|
start [/forum/topic.php?fid=17&fpage=23&tid=1349926]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 183ms |
0 / 0 |