Account Options

  1. Sign in
The old Google Groups will be going away soon.
Switch to the new Google Groups.
Google Groups Home
« Groups Home
[NHibernate-Hispano] NHV
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 1 - 25 of 27 - Collapse all  -  Translate all to Translated (View all originals)   Newer >
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Edgar Ramos  
View profile   Translate to Translated (View Original)
 More options May 15 2010, 3:09 pm
From: Edgar Ramos <eramose...@gmail.com>
Date: Sat, 15 May 2010 14:09:32 -0500
Local: Sat, May 15 2010 3:09 pm
Subject: [altnet-hispano] Re: [NHibernate-Hispano] NHV
Jose

Tengo muchas preguntas pero voy con lo basico

Al igual que tu busco la forma en que mis entidades sea POCOS (puros
por llamarlos asi), no me busca poner codigo para validacion y otros
(InotifyPropertyChance, IDataError) con estas clases

En la aplicacion chinooWindowsForm o WP, existe de antemano un
binding, algo que no se presenta en una aplicacion asp net mvc (espero
estar en lo cierto, si me equivoco me corrigen por favor), aqui la
pregunta, si requiero validar mis entidades o mis viewmodels tengo que
implementar INotiyPropertyChange ?

Si lo requiero puedo inyectar este comportamiento de la forma que lo
expones en chinooWP mediante el unaddins que esta creado ?

Y de paso tambien inyectar el comportamiento de IDataError ?

Gracias nuevamente

El día 12 de mayo de 2010 10:59, Edgar Ramos <eramose...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 15 2010, 4:22 pm
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Sat, 15 May 2010 17:22:57 -0300
Local: Sat, May 15 2010 4:22 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Para que tus clases puedan validarse en ASP.net MVC no necesitas
INotifyPropertyChanged.
No te recomiendo usar dynamicproxy, ni lo que esta actualmente en unhaddins
para implementar IDataErrorInfo.
Lo que te conviene es ponerlo en tu clase base, son dos metodos nomas, y de
ahi llamar al servicelocator, como te mostre en este post,
http://jfromaniello.blogspot.com/2010/02/idataerrorinfo-service-locat...

El 15 de mayo de 2010 16:09, Edgar Ramos <eramose...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edgar Ramos  
View profile   Translate to Translated (View Original)
 More options May 15 2010, 4:25 pm
From: Edgar Ramos <eramose...@gmail.com>
Date: Sat, 15 May 2010 15:25:14 -0500
Local: Sat, May 15 2010 4:25 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV
Gracias Jose, sigo avanzando

El día 15 de mayo de 2010 15:22, José F. Romaniello
<jfromanie...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edgar Ramos  
View profile   Translate to Translated (View Original)
 More options May 18 2010, 6:24 pm
From: Edgar Ramos <eramose...@gmail.com>
Date: Tue, 18 May 2010 17:24:15 -0500
Local: Tues, May 18 2010 6:24 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV
Gracias José

La verdad me toco leer bastante pero he logrado hacerlo funcionar,
todavia me falta separar bien en capas, pero las configuraciones
actuales trabajaron sin problema

utilice todo el codigo que sugeriste con la clase BaseEntity que
hereda de IDataErrorInfor, Entity de uNhAddIns.Entities
http://jfromaniello.blogspot.com/2010/02/idataerrorinfo-service-locat...

utilice el uNhAddIns.Adapters, uNhAddIns.NHibernateValidator,
uNhAddIns.NHibernateTypeResolver
utilice el codigo que sugiere Fabio en su blog
http://fabiomaulo.blogspot.com/2009/11/validation-abstraction-custom....
 y tambien este http://fabiomaulo.blogspot.com/2009/11/guywire.html

mas lo que hiciste en ChinooWP, con la interface IConfigurator

Bueno a mas de reutilizar ese codigo, costo trabajo entender esa forma
tan chevere que tienen para programar y los diferentes conceptos de
por medio

Gracias nuevamente y a todos quienes colaboraron en los proyectos de
uNhAddIns, la verdad que se aprende bastante revizando codigo

saludos

El día 15 de mayo de 2010 15:22, José F. Romaniello
<jfromanie...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 18 2010, 6:41 pm
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Tue, 18 May 2010 19:41:50 -0300
Local: Tues, May 18 2010 6:41 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Me alegro mucho che!

Una cosa que mencionaste en un momento y que se puede mejorar, cuando hice
el guywire de Chinook desconocía que windsor ya tenía una interfaz como la
que invente, se llama IWindsorInstaller fijate aca:
http://blog.ploeh.dk/2010/01/26/IWindsorInstaller.aspx

<http://blog.ploeh.dk/2010/01/26/IWindsorInstaller.aspx>Incluso según leo
aquí
http://stw.castleproject.org/Default.aspx?Page=Installers&NS=Windsor&...
<http://stw.castleproject.org/Default.aspx?Page=Installers&NS=Windsor&...>en
la proxima versión de castle bastara hacer esto:

container.Install(FromAssembly.This())

para ejecutar todos los installer

El 18 de mayo de 2010 19:24, Edgar Ramos <eramose...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edgar Ramos  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 10:22 am
From: Edgar Ramos <eramose...@gmail.com>
Date: Wed, 19 May 2010 09:22:24 -0500
Local: Wed, May 19 2010 10:22 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV
Genial José

Esta lista y gente como tu me alegran mis dias, ya me pongo a
investigar, mi siguiente paso es comenzar a dividir en capas mi
aplicacion, quiero hacer algo un poco al estilo DDD (sigo consultando
...), en la parte de mi dominio, esta ya mas o menos avanzada el
Domain.Core, con la estructura y organizacion de mis interfaces, no
encuentro claro, o diferencia entre DAO o Repository, y mas aun el
hacer que estos contratos den la pauta para una implementacion con el
patron Specification

Lo que veo claro es lo siguiente, en cada layer, será requerido si o
si Servicios, los cuales seran los unicos que se comuniquen con mis
implementaciones, y aqui una duda, estos servicios serán algo asi como
en chinooWP el AlbumManagerModel ?, me ayudaria tambien algun ejemplo
de un EntityRoot (creo que se escribe asi) y como organizarlo con mi
servicio antes mencionado
bueno en fin a seguir investigando ...

Saludos y Gracias a todos nuevamente

PD: Gracias a mi buen amigo Nelo http://nelopauselli.blogspot.com/, el
codigo de su aplicacion ha sido mi punto de partida

El día 18 de mayo de 2010 17:41, José F. Romaniello
<jfromanie...@gmail.com> escribió:

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 11:33 am
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Wed, 19 May 2010 12:33:22 -0300
Local: Wed, May 19 2010 11:33 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

la diferencia entre repository y dao es que Repository representa una
colección en memoria, en chinook use repository, esto queda claro en esta
interface:

http://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAd...

el mismo repositorio es un "*IQueryable*".

Últimamente estoy un poco peleado con este patron y uso dao, el dao
*no *implementa
iqueryable, pero tiene dos metodos
<http://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAd...>IQueryable<T>
Retrieve(Expression<Func<T, bool>> predicate);
IQueryable<T> Count(Expression<Func<T, bool>> predicate);

podes leer más aca:
http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-dao.html

Acerca del patrón especificación, lo podes usar con cualquiera de los dos
patrones, y si vas a usar linq, te recomiendo mirar esto que acabo de
publicar en codeplex hace 3 días:
http://linqspecs.codeplex.com/ (perdón por la propaganda)

P.S. Ya que te esta gustando todo esto que estas aprendiendo, estaría bueno
que te escribas unos posts :D.

El 19 de mayo de 2010 11:22, Edgar Ramos <eramose...@gmail.com> escribió:

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edgar Ramos  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 11:36 am
From: Edgar Ramos <eramose...@gmail.com>
Date: Wed, 19 May 2010 10:36:59 -0500
Local: Wed, May 19 2010 11:36 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV
Nuevamente Gracias José

La idea de los post me andaba sonando pero estoy con un poco de miedo
para serte sincero, debido a que mi nivel recien es basico, eso de
tener un blog tambien me gusto, a ver si me animo con todo

saludos

El día 19 de mayo de 2010 10:33, José F. Romaniello
<jfromanie...@gmail.com> escribió:

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Carlos Peix  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 11:42 am
From: Carlos Peix <carlos.p...@gmail.com>
Date: Wed, 19 May 2010 12:42:21 -0300
Local: Wed, May 19 2010 11:42 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Hola Jose,

Por ahi esta peleado con repository porque te estas limitando a una
definicion mucho mas restrictiva que lo que pensaron Fowler, Evans y otros.

Cuando ellos pensaban esto, *IQueryable no existia, por eso definieron que
un repositorio debe tener "semantica" de coleccion. Yo agregaria que debe
tener una semantica en su protocolo asimilable a la semantica de protocolo
de una coleccion.*
*
*
*Por ejemplo, no necesariamente un repositorio debe tener un metodo Add,
pero si tuviera la posibilidad de agregar elementos, deberia seguir esa
linea.*

Abrazo

----------------------------------
Carlos Peix

2010/5/19 José F. Romaniello <jfromanie...@gmail.com>

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 11:51 am
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Wed, 19 May 2010 12:51:18 -0300
Local: Wed, May 19 2010 11:51 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Si, entiendo mi equivocación,

El 19 de mayo de 2010 12:42, Carlos Peix <carlos.p...@gmail.com> escribió:

> Cuando ellos pensaban esto, *IQueryable no existia, por eso definieron que
> un repositorio debe tener "semantica" de coleccion. Yo agregaria que debe
> tener una semantica en su protocolo asimilable a la semantica de protocolo
> de una coleccion.*

Para decirlo en criollo la interfaz de un Repository tiene que ser similar a
la interfaz de una collection.
Lo cual hoy en día se facilita implementando IQueryable + un par de metodos
más. Antes de iqueryable, era un poco mas engorroso, y a veces los limites
entre dao y repository eran mas difusos.

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Carlos Peix  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 12:06 pm
From: Carlos Peix <carlos.p...@gmail.com>
Date: Wed, 19 May 2010 13:06:45 -0300
Local: Wed, May 19 2010 12:06 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Coincido

----------------------------------
Carlos Peix

2010/5/19 José F. Romaniello <jfromanie...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Cristian Prieto  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 12:34 pm
From: Cristian Prieto <kement...@gmail.com>
Date: Wed, 19 May 2010 10:34:19 -0600
Local: Wed, May 19 2010 12:34 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Hola José, Carlos, Edgar

Totalmente deacuerdo con la definición de Carlos, cuando Fowler y Evans
hablaban de repositorio no existían cosas como IQueryable, entonces
actualmente uno se pelea tratando de implementar repositorios que tengan
miles de métodos y/o jugar con specifications o generar tu propio Query
Object.

Algo que me llamó la atención fue la forma en que Edgar esta llevando a cabo
las validaciones en su aplicación MVC, si entendí bien, el esta dejando la
responsabilidad de la entidad el validarse, en otras palabras, algo como:

customer.IsValid();

Me imagino entonces que uno de sus controladores tendría su forma algo así:

public ActionResult Add(Customer customer) {
     if (customer.IsValid()) {
         _customerRepo.Add(customer);
        // Blah blah blah
     }
    // Blah blah

}

Para la mayoría de veces una acción como esta sería suficiente y bastaría,
digamos en una gran mayoría de casos, pero tengo un par de cosas que
quisiera agregar sobre este proceso de "entidad-validación-repositorio".

No entiendo porqué la mayoría de ejemplos (de microsoft y de terceros)
incluyen el repositorio de manera directa en el controlador, bueno,
probablemente porque los ejemplos son solamente ejemplos y son bastante
sencillos, por eso siempre vemos que se hace un binding directo al objeto
Customer y luego se agrega en el repositorio, totalmente deacuerdo que para
algo simple es el mejor approach.

Por lo general, nuestros objetos de dominio son (o *deberian* ser) ricos en
comportamiento, contener data y estado si, pero encapsular el comportamiento
del dominio en ellos. Lo que nosotros obtenemos o mostramos en la vista no
requiere tal comportamiento (y si requiere son cosas muy apegadas a la vista
como "formatea este url para que se parezca a esto"). Coincido que la
validación del objeto es una responsabilidad del objeto en si, pero por otro
lado sigo considerando a la inclusión del ServiceLocator como una mal
practice (claro, como todo se que hay excepciones y esta podría ser una de
ellas), el detalle (además del asunto del ServiceLocator) es que por lo
general debes validar concers que solamente le incumben a la presentación,
no al dominio. Por ello, a menos que sean casos excepcionales, hago una
distinción entre los objetos de dominio y los proyectados a la vista,
dejando que el DTO sea quien se valide y luego el objeto de dominio haga sus
validaciones de negocio respectivas.

Por ejemplo:

[Transactional]
public ActionResult Add(CustomerAddDTO customer) {
    if (Model.IsValid) {
        _customerManagementService.AddCustomer(customer);  // si se viola
una regla de negocio, throws
    }
    // Blah blah

}

Nota que el CustomerDTO no se valida así mismo, ese es trabajo de un
ModelBinder customizado que a su vez puede usar un validator injectado para
que lo haga (o usar el ServiceLocator dentro del ModelBinder).

No estoy diciendo que "permear" las entidades en el modelo de negocios sea
malo, simplemente hay momentos en que tal caso no se permite, por ejemplo,
la típica forma de login:

public ActionResult Login(string username, string password, bool remember,
string returnUrl) {
    // Aqui va lo demás

}

Probablemente username y password pertenezcan a la entidad Customer, pero *
definitivamente* las otras dos no. Tanto username y password *tienen* reglas
de validación, hacerlo dentro del controlador simplemente no esta bien. Es
cuando entonces tiene mayor sentido algo como:

[Transactional, HttpPost]
public ActionResult Login(LoginDTO login) {
    if (Model.IsValid) {
        // Blah
    }
    // More blah

}

¿Comprenden mi punto? ¿estoy fuera de lugar? ¿me dormí en la clase? ¿los
aburrí hoy?

Por otro lado, Edgar, vas por buen camino :)

Saludos!

-- Cristian

2010/5/19 José F. Romaniello <jfromanie...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 12:42 pm
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Wed, 19 May 2010 13:42:32 -0300
Local: Wed, May 19 2010 12:42 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Es totalmente CIERTO lo que decis y por eso en mi primer mail dije:

Si, funciona exactamente igual. Si el model de asp.net mvc implementa

> IDataErrorInfo no hace falta nada más. Y acá hago una observación muy
> importante OJO con usar Entidades como ViewModels, no te recomiendo ese
> camino. Por otro lado, usando xVal podes hacer que tus validaciones esten en
> el lado del cliente también, javascript.

-Implementar IDataerrorInfo facilita el hecho de mostrar los errores al usar
Databinding
-DataBinding entre UI y entidades de dominio... Guarda!

A eso que vos llamas DTO yo lo llamo viewmodel.

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edgar Ramos  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 2:21 pm
From: Edgar Ramos <eramose...@gmail.com>
Date: Wed, 19 May 2010 13:21:21 -0500
Local: Wed, May 19 2010 2:21 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV
Cristian

Mi primer enfoque fue ese justamente no validar de esta forma
customer.IsValid(); y luego algo como esto en el action de mis
controllers

public ActionResult Add(Customer customer) {
     if (customer.IsValid()) {
         _customerRepo.Add(customer);
        // Blah blah blah
     }
    // Blah blah

}

Coincido plenamente contigo
--------------------
Por ello, a menos que sean casos excepcionales, hago una distinción
entre los objetos de dominio y los proyectados a la vista, dejando que
el DTO sea quien se valide y luego el objeto de dominio haga sus
validaciones de negocio respectivas.
---------------------

E igual forma sugeria José llamandolo viewModels, con este ejemplo que expones

public ActionResult Add(CustomerAddDTO customer) {
    if (Model.IsValid) {
        _customerManagementService.AddCustomer(customer);  // si se
viola una regla de negocio, throws
    }
    // Blah blah

}

Es precisamente a lo que queria llegar, bueno ya llegue, ahora me
falta la linea esta linea
 _customerManagementService.AddCustomer(customer), voy avanzando poco
a poco, tratando de digerir todo (investigar, entender, y llevarlo a
codigo con buenas practicas)

Ahora al a ver expuesto lo siguiente [Transactional, HttpPost], la
parte Transactional, no la he entendido bien, me ayudaria un link para
investigar

Con lo siguiente
--------------
Nota que el CustomerDTO no se valida así mismo, ese es trabajo de un ModelBinder
------------

En el ejercicio que hice efectivamente lo he comprobado, pero para
esto mi viewModel (como lo expresa José) debio implementar
IDataErrorInfo, tengo que adminitirlo por hoy mi ejemplo se realizo
sobre una entidad, esta parte precisamente
------------------
public ActionResult Add(Customer customer) {,
-------------------------------------------
 mi idea sera luego utilizar viewModel o DTO ?, no lo se o si son lo
mismo, porque se llaman diferente ?

Por cierto no tengo en ninguna parte de mi codigo algo similar a esto
Customer.IsValid()

Con lo siguiente
----------------------
ModelBinder customizado que a su vez puede usar un validator injectado
para que lo haga (o usar el ServiceLocator dentro del ModelBinder).
---------------------

Lo del ModelBinder customizado lo lei en un post que no lo encuentro
este momento, para ir aumentando a mi lista de cosas pendientes me
viene bien otro link

Saludos y Gracias

PD: Siempre estos comentarios me alimentan y me hace ver que una de
las mejoras cosas que pude hacer es encontrar alnet, y en hora buena
esta en español

El día 19 de mayo de 2010 11:34, Cristian Prieto <kement...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Cristian Prieto  
View profile   Translate to Translated (View Original)
 More options May 19 2010, 3:08 pm
From: Cristian Prieto <kement...@gmail.com>
Date: Wed, 19 May 2010 13:08:04 -0600
Local: Wed, May 19 2010 3:08 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Si tu modelo es "simple enough" y tu lógica como tal es así de simple, go
ahead :)

-- Cristian

2010/5/19 Edgar Ramos <eramose...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en ...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Diego Mijelshon  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 10:04 am
From: Diego Mijelshon <di...@mijelshon.com.ar>
Date: Thu, 20 May 2010 11:04:07 -0300
Local: Thurs, May 20 2010 10:04 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Me hiciste pensar que sería interesante (y nada complicado) hacer una
implementación de un repositorio con esta interfaz:

public interface IRepository<TEntity, TIdentity> : IQueryable<TEntity>,
ICollection<TEntity>, IDictionary<TIdentity, TEntity> where TEntity :
IEntity<TIdentity>

Jugando un poco con las posibilidades tanto de DAO como de Repository, más
el agregado de IDictionary para operaciones como delete por key
En este último caso, no todos los métodos tienen sentido, pero es un lindo
experimento... después les cuento :-)

   Diego

2010/5/19 José F. Romaniello <jfromanie...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 10:45 am
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Thu, 20 May 2010 11:45:13 -0300
Local: Thurs, May 20 2010 10:45 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Este repositorio implementa IQueryable<TEntity>

http://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAd...

Opte como por wrappear todos los métodos del queryable de nhibernate. Y usa
SessionFactory.GetCurrentSession(), lo cual esta bueno por que toma la
session del contexto, sea web, thread o .. que se yo CpBT.

<http://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAd...>(no
implementa IDictionary ni ICollection)

El 20 de mayo de 2010 11:04, Diego Mijelshon <di...@mijelshon.com.ar>escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Diego Mijelshon  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 10:52 am
From: Diego Mijelshon <di...@mijelshon.com.ar>
Date: Thu, 20 May 2010 11:52:08 -0300
Local: Thurs, May 20 2010 10:52 am
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Sí, lo vi y estoy armando una implementación tomando eso como base.

   Diego

2010/5/20 José F. Romaniello <jfromanie...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edgar Ramos  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 12:13 pm
From: Edgar Ramos <eramose...@gmail.com>
Date: Thu, 20 May 2010 11:13:15 -0500
Local: Thurs, May 20 2010 12:13 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV
Genial todos los aportes son bienvenidos

Avanzando con la organización y estructura de mis layers en este
proyecto asp net mvc, me encuentro aqui.

un Assembly cuyo namespace es Domain.Entities, este al menos me parece
ya terminado pero se me presento lo siguiente "Contratos de
Repositorios", leyendo los articulos que me enviaron, como este de
Fabio
http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-dao.html

En donde comenta lo siguiente "Because the pattern does not define how
a DAO should look", entonces tengo el ejemplo de José que me ha
gustado mucho

public interface IRepository<T> : IQueryable<T>
    {
        T Get(object id);
        T Load(object id);
        T MakePersistent(T entity);
        void Refresh(T entity);
        void MakeTransient(T entity);
    }

y aqui una pregunta, el extender IQueryable<T>, me ayudaría en un
futuro a no realizar algo como esto, de la forma siguiente verdad ?
FindByDecription, FindByPrice, FindByName, FindByCriteria, y Fabio
sugiere lo siguiente

IEnumerable<TEntity> Retrieve(Expression<Func<TEntity, bool>> predicate);
int Count(Expression<Func<TEntity, bool>> predicate);

y José me ayuda con esto

IQueryable<T> Retrieve(Expression<Func<T, bool>> predicate);
IQueryable<T> Count(Expression<Func<T, bool>> predicate);

Primero tengo que investigar este codigo para entenderlo, cualquier
opinion es muy valiosa

Por otro lado, en chinookWP, José crea  IRepository<T> : IQueryable<T>
en el Assembly ChinookMediaManager.Data y su respectiva implementacion
con NH en ChinookMediaManager.Data.Impl, con Repository
Mi idea podria ser reutilizar IRepository y su implementacion como
base en todos mis proyectos en donde utilice NH, pero no requiero
crearlos cada vez que lo necesite, es buena idea sacarlos a un
assembly separado ?

Gracias nuevamente

El día 20 de mayo de 2010 09:52, Diego Mijelshon
<di...@mijelshon.com.ar> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 1:08 pm
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Thu, 20 May 2010 14:08:04 -0300
Local: Thurs, May 20 2010 1:08 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

El 20 de mayo de 2010 13:13, Edgar Ramos <eramose...@gmail.com> escribió:

> y aqui una pregunta, el extender IQueryable<T>, me ayudaría en un
> futuro a no realizar algo como esto, de la forma siguiente verdad ?
> FindByDecription, FindByPrice, FindByName, FindByCriteria, y Fabio
> sugiere lo siguiente

Sea que use Dao (con Retrieve y Count pero sin implementar IQueryable para
este ejemplo)
o sea que use Repository (sin Retrieve y sin Count pero implementando
IQueryable para este ejemplo)
Sea cual sea de las dos opciones, yo no pongo en mis repositorios
FindByDescription(...);

Con DAO:
   miDaoDeProductos.Retrieve(p => p.Description == xxx);
Con repository:
   miRepoDeProductos.Where(p => p.Description == xxx);
En el caso de repository, "Where" es un extension method de Linq, definido
en System.Linq. No hace falta crear nada.

Y para organizar queries mas complejas utilizo mi librería
http://linqspecs.codeplex.com/

 .........y Fabio sugiere lo siguiente

> IEnumerable<TEntity> Retrieve(Expression<Func<TEntity, bool>> predicate);

int Count(Expression<Func<TEntity, bool>> predicate);

> y José me ayuda con esto
> IQueryable<T> Retrieve(Expression<Func<T, bool>> predicate);

IQueryable<T> Count(Expression<Func<T, bool>> predicate);

Lo que yo sugerí, es lo mismo que Fabio sugiere, (de hecho... él me
lo sugirió a mi y yo lo empece a usar je!)
Cuando escribí ese mail me debo haber confundido y puse IQueryable para el
coutn, cuando en realidad es "int" para el count.

La diferencia entre devolver IEnumerable e IQueryable es para hacerlo un
poco mas explicito, ya que IQueryable : IEnumerable....

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Cristian Prieto  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 1:17 pm
From: Cristian Prieto <kement...@gmail.com>
Date: Thu, 20 May 2010 11:17:24 -0600
Local: Thurs, May 20 2010 1:17 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Comence a escribir una respuesta hace un rato al respecto, pero terminé con
un mail tan largo que se transformó en post de mi blog

http://www.cprieto.com/index.php/2010/05/20/repository-iqueryablet-y-...

En resumidas cuentas, usar Dao con IQueryable<T> a mi criterio esta rebien,
exponerlo es lo que no comparto.

¡Saludos!

-- Cristian

2010/5/20 José F. Romaniello <jfromanie...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Diego Mijelshon  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 1:18 pm
From: Diego Mijelshon <di...@mijelshon.com.ar>
Date: Thu, 20 May 2010 14:18:48 -0300
Local: Thurs, May 20 2010 1:18 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

OK, ya lo tengo más o menos andando...

Lo subí a http://gist.github.com/407818, se acepta feedback de todo tipo.

   Diego

2010/5/20 Diego Mijelshon <di...@mijelshon.com.ar>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Omar del Valle Rodríguez  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 1:35 pm
From: Omar del Valle Rodríguez <omarv...@gmail.com>
Date: Thu, 20 May 2010 19:35:14 +0200
Local: Thurs, May 20 2010 1:35 pm
Subject: RE: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Hace mucho que llegué a la misma conclusión que Cristian..  Genial el
artículo…

;)

De: altnet-hispano@googlegroups.com [mailto:altnet-hispano@googlegroups.com]
En nombre de Cristian Prieto
Enviado el: jueves, 20 de mayo de 2010 19:17
Para: altnet-hispano@googlegroups.com
Asunto: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Comence a escribir una respuesta hace un rato al respecto, pero terminé con
un mail tan largo que se transformó en post de mi blog

http://www.cprieto.com/index.php/2010/05/20/repository-iqueryablet-y-...
ierbas/

En resumidas cuentas, usar Dao con IQueryable<T> a mi criterio esta rebien,
exponerlo es lo que no comparto.

¡Saludos!

-- Cristian

2010/5/20 José F. Romaniello <jfromanie...@gmail.com>

El 20 de mayo de 2010 13:13, Edgar Ramos <eramose...@gmail.com> escribió:

y aqui una pregunta, el extender IQueryable<T>, me ayudaría en un
futuro a no realizar algo como esto, de la forma siguiente verdad ?
FindByDecription, FindByPrice, FindByName, FindByCriteria, y Fabio
sugiere lo siguiente

Sea que use Dao (con Retrieve y Count pero sin implementar IQueryable para
este ejemplo)

o sea que use Repository (sin Retrieve y sin Count pero implementando
IQueryable para este ejemplo)

Sea cual sea de las dos opciones, yo no pongo en mis repositorios
FindByDescription(...);

Con DAO:

   miDaoDeProductos.Retrieve(p => p.Description == xxx);

Con repository:

   miRepoDeProductos.Where(p => p.Description == xxx);

En el caso de repository, "Where" es un extension method de Linq, definido
en System.Linq. No hace falta crear nada.

Y para organizar queries mas complejas utilizo mi librería
http://linqspecs.codeplex.com/

 .........y Fabio sugiere lo siguiente

IEnumerable<TEntity> Retrieve(Expression<Func<TEntity, bool>> predicate);

int Count(Expression<Func<TEntity, bool>> predicate);

y José me ayuda con esto

IQueryable<T> Retrieve(Expression<Func<T, bool>> predicate);

IQueryable<T> Count(Expression<Func<T, bool>> predicate);

Lo que yo sugerí, es lo mismo que Fabio sugiere, (de hecho... él me lo
sugirió a mi y yo lo empece a usar je!)

Cuando escribí ese mail me debo haber confundido y puse IQueryable para el
coutn, cuando en realidad es "int" para el count.

La diferencia entre devolver IEnumerable e IQueryable es para hacerlo un
poco mas explicito, ya que IQueryable : IEnumerable....

--

Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de
Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a
altnet-hispano+unsubscribe@googlegroups.com
<mailto:altnet-hispano%2Bunsubscribe@googlegroups.com>
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/altnet-hispano?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de
Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a
altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/altnet-hispano?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 2:26 pm
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Thu, 20 May 2010 15:26:09 -0300
Local: Thurs, May 20 2010 2:26 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Si, no, que se yo. Hay como que buscar un balance, al hacer la api
más rígida como vos lo expones, vas perdiendo flexibilidad.
Y hay que ver hasta que punto se justifica sacrificar flexibilidad.

El hecho de tener este método;
IQueryable<T> Retrieve(Expression<Func<T, value>> predicate)

es por que si en vez de iqueryable retornas ienumerable, y luego le aplicas
otra cosa.. hagamos este ejemplo:

dao.Retrieve(x => x.Description.Contains("arrs").Any(x => x.Price < 10)

En ese caso tu Any recibe Func<T, bool> en lugar de Expression<Func<T,
bool>>... y eso que significa?, como Func es un delegado y no una
expression, se tiene que enumerar la consulta (hasta el where) y ejecutarse
localmente. Si haces que devuelva IQueryable el Any es en la base de datos,
con un Exists. (Por favor que alguien me corrija si estoy equivocado)

PS; como diría un amigo mio, "IPageable" suena fuerte. Ni me anime a ver los
métodos que tenía.

El 20 de mayo de 2010 14:17, Cristian Prieto <kement...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
José F. Romaniello  
View profile   Translate to Translated (View Original)
 More options May 20 2010, 2:28 pm
From: José F. Romaniello <jfromanie...@gmail.com>
Date: Thu, 20 May 2010 15:28:53 -0300
Local: Thurs, May 20 2010 2:28 pm
Subject: Re: [altnet-hispano] Re: [NHibernate-Hispano] NHV

Barbaro Diego! aunque el método Clear me da un poco de cagaso.

El 20 de mayo de 2010 14:18, Diego Mijelshon <di...@mijelshon.com.ar>escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Messages 1 - 25 of 27   Newer >
« Back to Discussions « Newer topic     Older topic »