Я создаю платформу 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, и какие характеристики оказались наиболее эффективными или если вы работали с другими фреймворками, такими как CSLA, Subsonic и т. Д. Также, любой опыт или идеи о том, как LINQ меняет / упрощает построение структуры слоя данных. Спасибо.