powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MVVM без ORM
18 сообщений из 43, страница 2 из 2
MVVM без ORM
    #38395900
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, и для кого я выделял текст , спрашивается.Джош СмитДанные должны откуда-то приходить и где-то храниться. В этом приложении экземпляр класса CustomerRepository загружает и хранит все объекты Customer. Так получилось, что он загружает данные клиентов из файла XML, но вообще
тип внешнего источника данных несущественен. Данные могу поступать из базы данных, веб-службы, именованного канала, файла на диске или от почтовых голубей : это просто не имеет значения.
Если у вас есть объект .NET с данными, независимо от того, откуда они, шаблон MVVM может вывести эти данные на экран.Репозиторий реализует прозрачную работу с данными, которые чёрт знает как могут быть распределены. ORM этого не умеет, это тупо object-relational mapping c дополнительными плюшками.

Вот скажите как реализовать простой репозиторий Джоша Смита, что загружает данные клиентов из файла XML, средствами EF?
...
Рейтинг: 0 / 0
MVVM без ORM
    #38395923
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdfyyЕсть проект написанный на связке: Delphi + FireBird. Написан по старинке, без ORM с прямыми запросами к БД в окнах.
По разным причинам принято решение Delphi "сменить" на WPF от Микрософта. Базу трогать нельзя, совместимость.

Пробовал натравить на базу EF он вешается, т.е. сгенерить до конца не может. Да и в сгенеренном много чего не хватает.
Все усугубляется тем, что объекты хранимые в таблице могут выступать как схожими так и разными.
Поясню: Есть таблица А и В. В таблице А хранится объект АА, в таблице В объекты ВА и ВВ. Объект ВА может быть контейнером для ВВ, но при этом объект АА может быть контейнером для обеих объектов ВА и ВВ. И с точки зрения объекта АА между объектами ВА и ВВ нет разницы. Причем объекты ВА и ВВ могут хранится в разных базах, которые могут редактироваться независимо в разных местах.
Как натравить NHibernate на базу не понял. По любому понял (на моем уровне знания данных ОRM), что придется многое допиливать руками.

По поводу клиента. Объекты ВА и ВВ могут быть соответственно отображены скопом, например в виде таблицы, или в виде зависимости какой нибудь графической схемой. Эти окна абсолютно не связаны с точки зрения использования. т.е. один клиент может редактировать только в одном окне, другой только в другом, а третий в обеих окнах сразу.

Все это конечно упрощенно. Надеюсь, что нормально объяснил. Готов добавить пояснения еще. Спасибо.Что за A и B, предметная область что-ли секретная?

Ну да ладно. То есть имеем некую древовидную (компонентную) структуру, когда узел (компонент) AA содержит в себе набор дочерних узлов (компонентов) BA и BB, или что означает "объект АА может быть контейнером для обеих объектов ВА и ВВ"?

И Вы не озвучили проблему: какие механизмы не получается реализовать?
...
Рейтинг: 0 / 0
MVVM без ORM
    #38395963
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, и для кого я выделял текст , спрашивается.Джош СмитДанные должны откуда-то приходить и где-то храниться. В этом приложении экземпляр класса CustomerRepository загружает и хранит все объекты Customer. Так получилось, что он загружает данные клиентов из файла XML, но вообще
тип внешнего источника данных несущественен. Данные могу поступать из базы данных, веб-службы, именованного канала, файла на диске или от почтовых голубей : это просто не имеет значения.
Если у вас есть объект .NET с данными, независимо от того, откуда они, шаблон MVVM может вывести эти данные на экран.Репозиторий реализует прозрачную работу с данными, которые чёрт знает как могут быть распределены. ORM этого не умеет, это тупо object-relational mapping c дополнительными плюшками.

Вот скажите как реализовать простой репозиторий Джоша Смита, что загружает данные клиентов из файла XML, средствами EF?
Да, я тут слишком узко понял. Согласен. Но если мы говорим только о случае, когда данные поступают из БД, то ORM этой БД может служить репозиторием же?
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396008
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бизнес объект - класс, хранящий данные.

Служба - класс, содержащий логику.

Репозитарий - служба, имеющая типовой интерфейс, предназначенная для работы с бизнес объектами определённого типа.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396127
bdfyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧто за A и B, предметная область что-ли секретная?
Визуальная разработка техпрограмм для контроллеров. Вроде наиболее известная в моей области: Квинт.
skyANAТо есть имеем некую древовидную (компонентную) структуру, когда узел (компонент) AA содержит в себе набор дочерних узлов (компонентов) BA и BB, или что означает "объект АА может быть контейнером для обеих объектов ВА и ВВ"?
Да, и далее узел (компонент) ВА содержит в себе набор дочерних узлов (компонентов) ВВ, и может содержать в себе узел (компонент) AA
skyANAИ Вы не озвучили проблему: какие механизмы не получается реализовать?
Как в идеале должна быть правильно организованна работа, без ORM.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    View            - пользовательский интерфейс
      |
Markup Extension    - по мере необходимости и возможности
      |
   ViewModel        - связывает поток данных между интерфейсом и моделью, осуществляет проверку данных, и инициирует загрузку данных посредством уровня Data Access
      |
    Model           - хранит в себе фактически копию базы данных. должен ли содержать проверку данных, что-то типа IDataErrorInfo?
      |
 Data Access        - осуществляет чтение, обновление, сохранение данных
      |
  База данных

Ничего не упустил?
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396161
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторModel - хранит в себе фактически копию базы данных. должен ли содержать проверку данных, что-то типа IDataErrorInfo?
У меня с этой штукой тоже проблемы идентификации. Если БД почти полностью моделирует предметную область - сущности и связи - то получается, что модель будет повторять эту БД. А тогда уже получается, что лучше не городить свою модель со связями, а использовать ORM от EF - там уже всё намоделировано в классах и связано наилучшим образом. Остаётся только расширить эту модель предметной области функциональностью (расчёты там и прочее) - и то, если этой функциональности не заложено в БД в виде там процедур или ещё чего - и вот вам нормальная модель из ORM. Я прав, нет? Ну реально нет смысла "хранить в себе копию БД".

Насчёт IDataErrorInfo - я его применяю совместно с атрибутами. Ну, если брать того же Джоша Смита, то у него валидация происходит прямо в IDataErrorInfo, а у меня - в атрибутах. Я на этом форуме уже кучу тем по этой теме насоздавал. Там получается, что в конечном счёте с атрибутами медленнее (т. к. их приходится вытаскивать через рефлексию и всё такое), но с ними гораздо нагляднее, т. к. все ограничения на модель присутствуют прямо в начале её определения в компактном виде, и не где-то далеко внизу по коду, где там IDataErrorInfo реализован. Если пихать всю и сложную валидацию в IDataErrorInfo, то эта валидация превращается в простыню кода проверок, который трудно обозревать. А медленность атрибутов относительная - если атрибуты и валидация не задействованы во время интенсивных расчётов, а применяются, скажем, только во время ввода небольших данных пользователем, то их и с атрибутами можно быстро обработать без тормозов для пользователя.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396168
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сцуко, сколько же от 7320 букаф... Просто невозможно курить этот поток сознания
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396171
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСцуко, сколько же от 7320 букаф... Просто невозможно курить этот поток сознания
У меня много проблем. Я пытаюсь их все сразу решить. Неуспеваю писать везде.

А вообще да, Шахиджанян виноват...
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396189
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320МСУСцуко, сколько же от 7320 букаф... Просто невозможно курить этот поток сознания
У меня много проблем. Я пытаюсь их все сразу решить. Неуспеваю писать везде.

А вообще да, Шахиджанян виноват...
Будь последовательными. Твою кашу потока сознания сложно осилить. Да и лень много читать.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396207
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320МСУСцуко, сколько же от 7320 букаф... Просто невозможно курить этот поток сознания
У меня много проблем. Я пытаюсь их все сразу решить. Неуспеваю писать везде.

А вообще да, Шахиджанян виноват...
Будь последовательными. Твою кашу потока сознания сложно осилить. Да и лень много читать.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396249
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320У меня с этой штукой тоже проблемы идентификации. Если БД почти полностью моделирует предметную область - сущности и связи - то получается, что модель будет повторять эту БД. А тогда уже получается, что лучше не городить свою модель со связями, а использовать ORM от EF - там уже всё намоделировано в классах и связано наилучшим образом. Остаётся только расширить эту модель предметной области функциональностью (расчёты там и прочее) - и то, если этой функциональности не заложено в БД в виде там процедур или ещё чего - и вот вам нормальная модель из ORM. Я прав, нет? Ну реально нет смысла "хранить в себе копию БД".Не хочешь, не городи. Не видишь смысла, не храни. Когда через год наткнёшься на грабли, тогда и поймёшь.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396259
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320МСУСцуко, сколько же от 7320 букаф... Просто невозможно курить этот поток сознания
У меня много проблем. Я пытаюсь их все сразу решить...Купи книжку по DDD.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396279
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320У меня с этой штукой тоже проблемы идентификации. Если БД почти полностью моделирует предметную область - сущности и связи - то получается, что модель будет повторять эту БД. А тогда уже получается, что лучше не городить свою модель со связями, а использовать ORM от EF - там уже всё намоделировано в классах и связано наилучшим образом. Остаётся только расширить эту модель предметной области функциональностью (расчёты там и прочее) - и то, если этой функциональности не заложено в БД в виде там процедур или ещё чего - и вот вам нормальная модель из ORM. Я прав, нет? Ну реально нет смысла "хранить в себе копию БД".Не хочешь, не городи. Не видишь смысла, не храни. Когда через год наткнёшься на грабли, тогда и поймёшь.
Приведите, пожалуйста, пример граблей? Ну нет у меня опыта, поэтому на мой взгляд это кажется логичным - не копировать одну и ту же схему в разные слои.

Ну, вот, к примеру, схемка из ORM (вложение).

ProductType там выглядит так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public partial class ProductType
{
		public ProductType()
		{
				this.Products = new HashSet<Product>();
		}

		public int Id { get; set; }
		public string Name { get; set; }

		public virtual ICollection<Product> Products { get; set; }
}



А модель этой сущности будет выглядеть точно также, т. к. модель тоже должна иметь те же свойства. И ту же связь с Product, реализуемую... а почему бы не так же, как и в ORM?
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396284
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Приведите, пожалуйста, пример граблей? Ну нет у меня опыта, поэтому на мой взгляд это кажется логичным - не копировать одну и ту же схему в разные слои.
1. Поменялся источник данных. Теперь сущности типа Product берутся из внешнего SOA.
2. Появилось требование ввести новый булевский атрибут Checked для выбора выбранных продуктов.
3. Сменили ORM.
4. Реализация наследования логики.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396297
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, а покажи как у тебя отображается ProductType в Object Browser.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396446
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, а покажи как у тебя отображается ProductType в Object Browser.
Это же POCO - он отображается так же, как и все другие классы, написанные "с нуля". Это если вы зависимости имели ввиду. Но на всякий случай показал во вложении.

Не, ну, на крайняк же можно тупо скопировать этот класс себе в модель? Мне он кажется вполне подходящим для простой модели.
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396511
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdfyyskyANAЧто за A и B, предметная область что-ли секретная?
Визуальная разработка техпрограмм для контроллеров. Вроде наиболее известная в моей области: Квинт.
skyANAТо есть имеем некую древовидную (компонентную) структуру, когда узел (компонент) AA содержит в себе набор дочерних узлов (компонентов) BA и BB, или что означает "объект АА может быть контейнером для обеих объектов ВА и ВВ"?
Да, и далее узел (компонент) ВА содержит в себе набор дочерних узлов (компонентов) ВВ, и может содержать в себе узел (компонент) AA
skyANAИ Вы не озвучили проблему: какие механизмы не получается реализовать?
Как в идеале должна быть правильно организованна работа, без ORM.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    View            - пользовательский интерфейс
      |
Markup Extension    - по мере необходимости и возможности
      |
   ViewModel        - связывает поток данных между интерфейсом и моделью, осуществляет проверку данных, и инициирует загрузку данных посредством уровня Data Access
      |
    Model           - хранит в себе фактически копию базы данных. должен ли содержать проверку данных, что-то типа IDataErrorInfo?
      |
 Data Access        - осуществляет чтение, обновление, сохранение данных
      |
  База данных
Все правильно. Возьми csla, в котором бизнес-обекты, а не копия бд.
Dal может быть любым, в том числе и половные orm

Ничего не упустил?
...
Рейтинг: 0 / 0
MVVM без ORM
    #38396515
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все правильно. Я, когда переходил с делфи, взял csla c бизнес-обектами, а не копией бд. Dal в этом фреймворке может быть любым, в том числе и половные orm.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MVVM без ORM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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