это. Но проблема в ленивой загрузке данных. Если POCO / Entity отсоединен, у вас нет возможности лениво загрузить данные. Единственная альтернатива - загружать все данные, что тоже плохо.
верное, слишком много читаю и страдаю от информационной перегрузки. Поэтому я был бы признателен за некоторые четкие указания.
Из того, что я собрал, я могу использовать шаблон 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?
Если вам нужна дополнительная информация, пожалуйста, спросите.