Я, наверное, слишком много читаю и страдаю от информационной перегрузки. Поэтому я был бы признателен за некоторые четкие указания.
Из того, что я собрал, я могу использовать шаблон T4 VS2010 для генерации классов POCO, которые не связаны напрямую с EF. Я поместил бы их в их собственный проект, в то время как мой DAL имел бы класс, производный от ObjectContext, верно?
Как только у меня появятся эти классы, допустимо ли использовать их на уровне пользовательского интерфейса? То есть, скажем, один из сгенерированных классов - BookInfo
, который содержит информацию о книгах для публичной библиотеки (название, издание, страницы, резюме и т. Д.).
Мой BLL будет содержать класс BooksBLL
, например, так:
public class BooksBLL
{
ObjectContext _context;
public void AddBook(BookInfo book) { ... }
public void DeleteBook(int bookID) { ... }
public void UpdateBook(int bookID, BookInfo newBook) { ... }
//Advanced search taking possibly all fields into consideration
public List<BookInfo> ResolveSearch(Func<BookInfo, bool> filter) { ... }
//etc...
}
Итак, мои ViewModels в моем приложении MVVM UI будут взаимодействовать с вышеуказанным классом BLL и обмениваться экземплярами BookInfo. Это нормально?
Кроме того, в сообщениях MVVM в Интернете предлагается реализовать IDataErrorInfo
для целей проверки. Можно ли реализовать указанный интерфейс в сгенерированном классе POCO? Я вижу из примеров, что эти сгенерированные классы POCO содержат все виртуальные свойства и вещи, и я надеюсь, что добавление моей собственной логики будет хорошо?
Если это имеет какое-либо значение, в настоящее время мое приложение не использует WCF (или какие-либо другие сетевые компоненты).
Кроме того, если вы видите что-то ужасно неправильное в том, как я пытаюсь построить свой BLL, не стесняйтесь предлагать помощь и в этой области.
Обновление (дополнительная информация по запросу):
Я пытаюсь создать приложение для автоматизации библиотек. В настоящее время это , а не сеть.
Я думаю о следующих слоях:
- Проект, состоящий из сгенерированных классов POCO (BookInfo, Автор, Член, Издатель, Контакт и т. Д.)
- Проект с классом, производным от ObjectContext (DAL?)
- Уровень бизнес-логики с классами, подобными тем, которые я упоминал выше (BooksBLL, AuthorsBLL и т. Д.)
- Уровень пользовательского интерфейса WPF с использованием шаблона MVVM. (Отсюда мой подвопрос о реализации IDataErrorInfo).
Итак, я задаюсь вопросом о таких вещах, как использование экземпляра BooksBLL
в классе ViewModel, вызов ResolveSearch()
для него для получения List<BookInfo>
и представление его… то есть использование классов POCO везде.
Или у меня должны быть дополнительные классы, которые отражают классы POCO, выставленные из моего BLL?
Если вам нужна дополнительная информация, пожалуйста, спросите.