POCO significa "Objeto simple de C# llanura" o "Objeto de CLR sencillo normal", según a quién se lo pregunte. Si un marco o API indica que opera en POCO, significa que le permite definir su modelo de objeto idiomatically sin tener que hacer que sus objetos hereden de clases base específicas. En términos generales, los marcos que funcionan en POCO le permiten una mayor libertad y control sobre el diseño y la implementación de sus clases, ya que tienen menos requisitos para funcionar correctamente.
ignorancia de persistencia significa que cualquier cosa en su código que opere en la capa de lógica de negocios o superior no sabe nada sobre el diseño real de la base de datos, qué motor de base de datos está ejecutando, o cómo o cuándo se obtienen objetos recuperado o persistido en la base de datos. En el caso del MEF, la ignorancia de persistencia se logra trabajando en POCO y utilizando LINQ para realizar consultas (es decir, no requiere que el usuario cree consultas SQL para recuperar los objetos deseados).
Es una pregunta abierta, pero en general se acepta que, en la mayoría de las circunstancias, los objetos de dominio (u objetos comerciales, de cualquier manera, los POCO mencionados anteriormente) deberían ignorar la lógica de persistencia. Es decir, en lugar de llamar al MyBusinessObject.Save()
, tiene un administrador de IO o una clase de adaptador, y llama al Manager.Save(MyBusinessObject)
. De esta manera, evitas exponer la semántica de persistencia en tus objetos de negocio: obtienes una mejor separación de las preocupaciones de esa manera.
Pero con entidades generadas por EntityFramework, ya tenemos esta separación con las clases generadas que heredan de ObjectContext a la persistencia y las clases que representan a la entidad. Estoy leyendo el artículo en la revista msdn sobre EF 4.0 y hay una sección sobre POCO, en el artículo, el escritor crea un objeto desde cero ... ¿No podemos usar las entidades generadas? ¿No son POCO? – pdiddy
¿Puedes publicar un enlace al artículo? Si su marco requiere que sus clases * entity * deriven de una clase base particular o que incluyan atributos específicos de framework o implementen interfaces de framework, entonces no es compatible con POCO's. Si EF 4.0 no coloca una clase base o requisito de atribución en sus clases de entidad, entonces es compatible con POCO. Tenga en cuenta que esta restricción no se aplica a las clases que están específicamente destinadas a gestionar la semántica de persistencia: * tienen * que acoplarse a la persistencia, y hablando de POCO, falta el punto. – Dathan
EF usará por defecto 'EntityObject' como su clase base para todas sus entidades -> definitivamente no POCO. * PERO *: con EF4, tiene la opción de activar el soporte de POCO, en cuyo caso sus clases no derivan de ninguna clase base específica, no necesitan implementar ninguna interfaz específica, y no necesitan ningún atributo cualquiera -> POCO puro. –