Я создаю платформу WPF / MVVM, которая генерирует код для классов модели.
Я планирую иметь для каждой таблицы базы данных / веб-службы (например, «Клиенты») два класса моделей:
- особый класс модели (например, "Клиент")
- и класс модели множественного числа (например, "Клиенты")
Класс единственной модели имеет все свои свойства (FirstName, LastName и т. Д.), А также все методы, которые имеют смысл для отдельного экземпляра, например Сохранить (), Удалить (), Рассчитать зарплату () и т. Д.
Класс множественной модели имеет коллекцию единичных объектов модели, а также те же методы, так как вы хотели бы также работать с группой единичных объектов, например Save (), Delete (), CalculateSalary (), а также определенные методы, такие как Sort (), и методы, которые упростили задачу для определенных групп, например LoadAllGoldCustomers () или даже LoadWithSql (строка sql) и т. Д.
Я делал подобный фреймворк раньше (PHP), и он упростил написание и понимание такого кода:
Customers customers = new Customers("all");
customers.CalculateSalary();
Пара унаследованных классов (Item и Items) взяли большую часть кода из отдельных классов единственного и множественного числа для каждой таблицы базы данных, что сделало среду очень чистой для программирования.
Однако я редко видел, чтобы другие приложения делали это разделение классов модели на единственное / множественное число. Вместо этого почти всегда есть только один класс для каждой таблицы базы данных, например Customer
, и у этого класса есть необходимые методы множественного числа, например GetCustomers (строка sql) и т. Д.
Я только что заметил в WPF Model-View-ViewModel Toolkit 0.1 Пошаговое руководство, в них вы должны сделать две модели своих "Моделей", каталог двух классов:
- Customer.cs (только поля)
- CustomersDataSource.cs (один метод List Load ())
Это похоже на аналогичную концепцию, только класс "множественного числа" называется источником данных.
Итак, теперь я собираюсь создать еще один фреймворк на основе WPF / MVVM и могу решить, как я хочу структурировать классы модели. Я хочу, чтобы фреймворк был:
- ясность и простота программирования с помощью ViewModel, отсюда четкое разделение классов модели единственного и множественного числа, вам просто нужно создать экземпляр класса единственного или множественного числа и вызвать для него метод, и у вас есть свои данные .
- хорошо вписывается в шаблон MVVM (что, как я понимаю, означает максимально простое, просто иметь свойства и методы, которые может вызывать ViewModel, но не реализовывать никаких специфичных для WPF функций, таких как INotifyProperityChanged)
- хочу, чтобы мой слой данных располагался над любым источником данных, поэтому, если я использую LINQ-to-SQL, я все равно вызываю свои собственные классы моделей, и если я хочу переключиться на сохранение в Oracle, я пишу более низкие данные слой адаптера для моих классов, чтобы с ним взаимодействовать.
- Воспользуйтесь преимуществами LINQ наилучшим образом
Я был бы признателен за отзывы от тех, кто разработал слои данных для фреймворков, особенно с использованием WPF / MVVM / Composite Application Library, и какие характеристики, которые вы нашли, работали лучше всего, или если вы работали с другими фреймворками, такими как CSLA, Subsonic и т. Д. Кроме того, любой опыт или идеи о том, как LINQ изменяет / упрощает построение структуры уровня данных. Спасибо.