primary net framework foreign data asp c# .net entity-framework poco

c# - net - ¿Qué es Entity Framework con POCO?



primary key asp net (4)

¿Cuál es el beneficio de usar POCO? No entiendo el significado de Persistence Ignorance, ¿qué significa esto? ¿Que el objeto poco no puede exponer cosas como Guardar? No puedo entender este POCO porque hay mucho alboroto alrededor.

¿Cuál es la diferencia con las entidades generadas por EF y POCO?


POCO = Objetos CLR antiguos simples.

Los viejos objetos CLR (es decir, C # o VB) significa que puedo hablar C # o VB todo el tiempo que estoy escribiendo mi programa, y ​​no tener que preocuparme por el lenguaje de bases de datos esotéricas como

UPDATE MYTABLE SET MYFIELD1 = @MYPARAMETER1, MYFIELD2 = @MYPARAMETER2 BLAH BLAH

EF Entidades generadas == POCO conectado (indirectamente) a una base de datos.


La clase POCO es la clase que no depende de ninguna clase base específica del marco. Es como cualquier otra clase normal de .NET por lo que se llama "Objetos CLR antiguos simples". Estas entidades POCO (también conocidas como objetos ignorantes de persistencia) admiten la mayoría de las mismas consultas LINQ que las entidades derivadas EntityObject.


POCO significa "Objeto simple de C # simple" o "Objeto de CLR sencillo antiguo", según a quién le pregunte. Si un marco o API indica que opera en POCO, significa que le permite definir su modelo de objeto de manera idiomática 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.

La ignorancia de persistencia significa que, en la medida de lo posible, cualquier elemento del código que funcione en la capa de lógica empresarial o superior no sabe nada sobre el diseño real de la base de datos, qué motor de base de datos está ejecutando, cómo o cuándo se recuperan o persisten los objetos a la base de datos. En el caso del MEF, la ignorancia de persistencia se logra trabajando en POCO y usando LINQ para realizar consultas (es decir, sin requerir 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 a MyBusinessObject.Save() , tiene un administrador de IO o una clase de adaptador, y llama a 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.


POCO = Objetos CLR antiguos simples

Beneficios de POCO:

Tecnología El agnosticismo es una bendición: este concepto generalmente gira en torno a PI (Ignorancia de persistencia), pero no es solo eso. Ignorancia de persistencia significa que sus entidades no deben tener restricciones de código relacionadas con la persistencia que un marco, generalmente un ORM, le imponga. Esto es, por ejemplo, si tiene un mapeo de nivel de atributo donde esos atributos no son parte de su dominio, pero existen solo porque algunos frameworks quieren que estén allí, entonces su dominio no es persistente ignorante. Sidar dijo aquí