2010-04-06 21 views
5

¿Qué se pierde al crear POCO utilizando plantillas T4 en entity framework 4.0? ¿Por qué es el comportamiento predeterminado cuando se utiliza el marco de la entidad 4.0 no para crear POCO?Entidad marco POCO

Respuesta

3

Pierdes un número de cosas. Un POCO "puro" tiene un uso limitado en un ORM, porque no modificará el seguimiento. En otras palabras, cuando modifica el objeto y luego guarda los cambios en el contexto, desea que las propiedades modificadas se guarden en la base de datos. Con un POCO "puro" puede hacer esto con el seguimiento de cambios basado en instantáneas, que es bastante ineficiente. También puede hacerlo con los proxies de tiempo de ejecución, que le obligan a realizar las propiedades de seguimiento public virtual, por lo que podría decirse que ya no tiene un "POCO". Además, usar proxies significa que no se conoce el verdadero tipo de tiempo de ejecución de la instancia.

También pierde algunas de las propiedades de conveniencia como EntityState.

Las POCO "puras" no pueden hacer cargas perezosas. De nuevo, puede solucionar esto con los tipos de proxy, pero, de nuevo, si usa proxys, realmente no tiene un POCO "puro".

Además de todo esto, hay menos necesidad de utilizar entidades POCO en Entity Framework que en algunos otros ORM. Esto se debe a que siempre puede proyectar sus tipos de entidad en instancias de POCO utilizando LINQ, sin tener que materializar primero las instancias de la entidad. Por lo tanto, las POCO "puras" siempre están disponibles en una aplicación de Entity Framework, incluso si no mapea sus entidades de esa manera.

+0

¿Podría comentar las pruebas unitarias con POCO no? – rkrauter

+1

Las pruebas unitarias con no POCO funcionan bien. No hay problema para mí. –

+0

¡Gracias por la respuesta! – rkrauter