Yo no tengo mucha experiencia en EF, pero con nh hago actualmente esto; la interfaz de IDao<T>
Lo que no me gusta demasiado de tener un solo Dao o Repository generico que devuelva IQueryable es que las querys te quedan desperdigadas e incluso repetidas por toda la aplicacion, yo uso el repositorio como un encapsulador de queries y tengo un repositorio por "concepto de negocio" pero todos le pegan al mismo contexto, que suelen recibir como parametro en el constructor.
'ta bueno lo de tener una clase estatica con query expressions q aplican a un "entity set". Customers.Preferred hasta podria ser una static property, creo.Y para commands como haces?
Lo del IDao, a mi me gusta generarlo strong-typed con un T4 sobre el modelo de EF asi tengo intellisense.
Tambien estoy jugando con un T4 q me genera interfaces para todas las entidades, asi tengo toda la API interface-based, y uso las mismas interfaces en el server (astoria) y en el cliente (astoria ;)). Pero todavia no puedo decir q este convencido 100%... quizas unos plain POCOs andarian, no sep.... siempre termino volviendo a la idea (de Fabio?) de no tener mas classes para DTOs y solo tener interfaces, y un solo uber-DTO al q le pones interfaces arriba...
dao != repositoryel dao son las entities y sus IQueryables.el repository es el q agrega la logica de negocio.el punto es como haces para componer/"layerear" varios "aspects" de logica de negocio sobre el mismo dao/db y q sean facil de componer, asi no tenes q recibir dos repositories mas un unit of work como tenia Cibrax.PD: q grande Cibrax reviviendo un thread de un mes de viejo :P
/kzu
pero devolviendo un IQueryable con mi propio query provider asi puedo trasformarlo pre-pasarlo a uno u otro en la forma en q lo esperan en su propio IQueryable.
q traduzca ese include en lo q EF espera.
quizas me fui al joraca y no pueda implementarlo nunca asi, pero lo copado de eso es que puedo tener ese "Include" en el codigo "posta" y sin embargo poder correrlo in-memory para los tests q van contra un in-memory array de Users.
suena bien. no veo bien ahi como usas lo del retrieve, pero asumo q el dao stub no hace nada con esa llamada.
suena bien. no veo bien ahi como usas lo del retrieve, pero asumo q el dao stub no hace nada con esa llamada.
Hola a todos!
Me engancho un poco tarde en este thread solo para comentar que me gusta pensar a las entidades como simples DTOs inanimados (sin comportamiento) y disponer de clases (business) que le dan vida a esas entidades.
En el desarrollo de aplicaciones de negocio, nunca me termina de convencer la idea de que una entidad sabe como validarse y guardarse sola. Pues nunca vi a una factura real auto-completarse, pagarse, contabilizarse y guardarse sola. Siempre hubo alguien que lo hizo, generalmente un empleado/a del área de facturación.
Quizás haya escenarios reales que valen la pena, pero no me he encontrado con esa necesidad.
Disculpen, creo que ya me fui del tema principal.
Saludos
~Gus
gustavo azcona | .net architect | gustavo...@avanic.com.ar | (+54 911) 6229-6045 | gustavoazcona.blogspot.com
No virus
found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.819 / Virus Database: 271.1.1/2876 - Release Date: 05/15/10
15:26:00
Enviado desde mi BlackBerry de Movistar (http://www.movistar.com.ar)
Hola a todos!
Me engancho un poco tarde en este thread solo para comentar que me gusta pensar a las entidades como simples DTOs inanimados (sin comportamiento) y disponer de clases (business) que le dan vida a esas entidades.
En el desarrollo de aplicaciones de negocio, nunca me termina de convencer la idea de que una entidad sabe como validarse y guardarse sola. Pues nunca vi a una factura real auto-completarse, pagarse, contabilizarse y guardarse sola. Siempre hubo alguien que lo hizo, generalmente un empleado/a del área de facturación.
Quizás haya escenarios reales que valen la pena, pero no me he encontrado con esa necesidad.
Disculpen, creo que ya me fui del tema principal.
Saludos
~Gus
gustavo azcona | .net architect | gustavo...@avanic.com.ar | (+54 911) 6229-6045 | gustavoazcona.blogspot.com
De: altnet-a...@googlegroups.com [mailto:altnet-a...@googlegroups.com] En nombre de José F. Romaniello
Enviado el: sábado, 15 de mayo de 2010 11:13 a.m.
Para: altnet-a...@googlegroups.com
Asunto: Re: [altnet-argentina] Re: Donde poner el Unit Of Work?
el primer parametro es el predicado, el segundo parametro las propiedades que queres "expandir". Es decir, una propiedad que esta mapeada como lazy load, para esta consulta, la quiero no-lazy.
No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.819 / Virus Database: 271.1.1/2876 - Release Date: 05/15/10 15:26:00
--
Desuscripción: altnet-argenti...@googlegroups.com