En una arquitectura en capas usando Entity Framework, ¿debo devolver las clases POCO del BLL? (Se necesita orientación de arquitectura)

He estado leyendo demasiado probablemente y estoy sufriendo una sobrecarga de información. Por lo tanto, agradecería alguna orientación explícita.

De lo que he reunido, puedo usar la plantilla T4 de VS2010 para generar clases de POCO que no están vinculadas directamente al EF. Los colocaría en su propio proyecto mientras mi DAL tendría una clase derivada de ObjectContext, ¿verdad?

Una vez que tengo estas clases, ¿es una práctica aceptable usarlas en la capa de interfaz de usuario? Es decir, una de las clases generadas esBookInfo que contiene cosas sobre libros para una biblioteca pública (Título, edición, páginas, resumen, etc.).

My BLL contendría una claseBooksBLL por ejemplo así:

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...
}

Por lo tanto, mis ViewModels en mi aplicación MVVM UI se comunicarán con la clase BLL anterior e intercambiarán instancias de BookInfo. ¿Está bien?

demás, las publicaciones de MVVM en la Web sugieren implementarIDataErrorInfo para fines de validación. ¿Está bien si implemento dicha interfaz en la clase POCO generada? Veo de las muestras que esas clases POCO generadas contienen todas las propiedades virtuales y estufas y espero agregar mi propia lógica ¿estaría bien?

Si hace alguna diferencia, en este momento, mi aplicación no usa WCF (ni ninguna otra cosa de redes).

Además, si ve algo terriblemente mal en la forma en que estoy tratando de construir mi BLL, no dude en ofrecer ayuda en esa área también.

Update (información adicional según lo solicitado):

Estoy tratando de crear una aplicación de automatización de biblioteca. Esn red basada en la actualidad.

Estoy pensando en tener capas de la siguiente manera:

Un proyecto que consiste en clases POCO generadas (BookInfo, Autor, Miembro, Editor, Contacto, etc.) Un proyecto con la clase derivada de ObjectContext (DAL?) Una capa de lógica de negocios con clases como la que mencioné anteriormente (BooksBLL, AuthorsBLL, etc.)Una capa WPF UI usando el patrón MVVM. (De ahí mi subpregunta sobre la implementación de IDataErrorInfo).

Así que me pregunto sobre cosas como usar una instancia deBooksBLL en una clase ViewModel, llamando aResolveSearch() en él para obtener unList<BookInfo> y presentarlo ... es decir, usar las clases de POCO en todas partes.

¿O debería tener clases adicionales que reflejen las clases de POCO expuestas desde mi BLL?

Si necesita más detalles, pregunte.

Respuestas a la pregunta(3)

Su respuesta a la pregunta