Я, вероятно, слишком много читал и страдаю от некоторой информационной перегрузки. Так что я был бы признателен за подробное руководство.
Из того, что я собрал, я могу использовать штуку с шаблоном 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...
}
Итак, мои модели просмотра в моем приложении пользовательского интерфейса MVVM будут взаимодействовать с указанным выше классом BLL и обмениваться экземплярами BookInfo. Это нормально?
Кроме того, сообщения MVVM в Интернете предлагают реализовать IDataErrorInfo
для целей проверки. Можно ли реализовать указанный интерфейс в сгенерированном классе POCO? Из примеров я вижу, что эти сгенерированные классы POCO содержат все виртуальные свойства и информацию, и я надеюсь, что добавление моей собственной логики будет приемлемым?
Если это имеет значение, в настоящее время мое приложение не использует WCF (или какие-либо сетевые компоненты) .
Кроме того, если вы видите что-то ужасно неправильное в том, как я пытаюсь построить свой BLL, пожалуйста, не стесняйтесь предложить помощь и в этой области.
Обновление (дополнительная информация по запросу):
Я пытаюсь создать приложение для автоматизации библиотеки. В настоящее время это не сеть.
Я думаю о следующих уровнях:
Поэтому мне интересно, например, об использовании экземпляра BooksBLL
в классе ViewModel, вызов ResolveSearch ()
на нем, чтобы получить List
и представить его ... то есть повсюду использовать классы POCO.
Или мне следует иметь дополнительные классы, которые зеркалировать классы POCO, представленные в моем BLL?
Если требуются дополнительные подробности, спросите.