Que buenas ideas.Podría por favor escribir un wiki con todas tus observaciones ? Sería muy util a todos usuarios de NHV.
El lugar para escribir un buen wiki de referencia, como te parezca mas claro, es: http://nhforge.org/wikis/validator/default.aspx Tabien está el How To: http://nhforge.org/wikis/howtonh/default.aspx El 24 de abril de 2009 23:53, "José F. Romaniello" <[email protected]>escribió: > > Ok, ya sabía como resolver un servicio con el container :S .. > Lo que me hacía falta era el otro lado de la igual (osea lo que > concierne a NHV) es decir, pone el shared engine en: > NHibernate.Validator.Cfg.Environment.SharedEngineProvider > como dice en uno de tus post. > > Es probable que tenga algo mal pero esto es a lo que llegué: > > var ve = new ValidatorEngine(); > > container.Register(Component.For<ValidatorEngine>() > .Instance(ve) > .LifeStyle.Singleton); > > container.Register(Component.For<ISharedEngineProvider>() > .ImplementedBy<CastleSharedEngineProvider>()); > > NHibernate.Validator.Cfg.Environment.SharedEngineProvider = > container.Resolve<ISharedEngineProvider>(); > > > var configure = new FluentConfiguration(); > > configure.Register( > Assembly.Load("SGF.Dominio") > .ValidationDefinitions() > ) > .SetDefaultValidatorMode(ValidatorMode.UseAttribute) > > > .IntegrateWithNHibernate.ApplyingDDLConstraints().And.RegisteringListeners(); > > ve.Configure(configure); > > Algo que no podía darme cuenta, era como decirle a NHV que altere la > configuración de NH para aplicar las constraints ddl y registrar los > listeners.. > Explorando un poco el código de NHV llegue a esto > ValidatorInitializer.Initialize(miConfigDeNH) > > IMO: Hice varias busquedas en google y creo que no esta muy "googleable" > (salvo medio escondido un post de Marek Blotny). Creo que el post de > referencia para nhibernate validator fluent es el de Fabio y no menciona > nada sobre el ValidatorInitializar.Initialize. > Si bien son dos cosas diferentes alguien podría tener la falsa impresión > de que con esto: > > "IntegrateWithNHibernate.ApplyingDDLConstraints().And.RegisteringListeners()" > ya esta. > IMO2: Le falta un buen summary, como lo tienen la mayoría de las otras > clases. > > > Fabio Maulo escribió: > > El 24 de abril de 2009 15:00, "José F. Romaniello" > > <[email protected] <mailto:[email protected]>> escribió: > > > > > > Barbaro, entiendo lo que decis y realmente me gusta mas. Si no fuera > > molestia, podrías comentar un poco como se hace lo segundo (por ahora > > sin ServiceLocator): > > "En la configuración de NHV le pido a WindSor, o mejor al > > ServiceLocator, la instancia de ISharedEngineProvider." > > > > > > container.Resolve<ISharedEngineProvider>(); > > > > > > Por otro lado, existe alguna forma de hacer esto en app/web.config? > > > > > > Ah bueno... desde allí no podes porque tiene que ser parameter-less ctor. > > Pero si configuras NHV luego de configurar el container y lo primero > > que haces es asignar el SharedEngineProvider todo te funciona. > > > > > > > > > > Fabio Maulo escribió: > > > Está bien aunque yo lo implementatría distinto. > > > En el constructor de CastleSharedEngineProvider injectaría > > > ValidatorEngine y en Castle registraría ISharedEngineProvider. > > > En la configuración de NHV le pido a WindSor, o mejor al > > > ServiceLocator, la instancia de ISharedEngineProvider. > > > > > > El 24 de abril de 2009 13:38, "José F. Romaniello" > > > <[email protected] <mailto:[email protected]> > > <mailto:[email protected] <mailto:[email protected]>>> > > escribió: > > > > > > > > > Y ya que estamos hablando de rudimentario, yo no me animaba a > > > mostrar el > > > mio por las duda les causara asco, > > > tiene esta pinta esta "pasable" por lo menos?: > > > > > > public class CastleSharedEngineProvider : > > ISharedEngineProvider > > > { > > > public ValidatorEngine GetEngine() > > > { > > > var containerAccessor = > > > HttpContext.Current.ApplicationInstance as IContainerAccessor; > > > > > > if (containerAccessor == null) > > > throw new Exception("No se encontro > > > IContainerAccessor"); > > > > > > var ve = > > > containerAccessor.Container.Resolve<ValidatorEngine>(); > > > > > > return ve; > > > } > > > } > > > > > > en el container lo meto asi : > > > > > > Component.For<ValidatorEngine>() > > > .Instance(ve) > > > .LifeStyle.Singleton > > > > > > (creo que el singleton no haría falta ya que le estoy > > pasando una > > > instancia concreta). > > > > > > > > > Fabio Maulo escribió: > > > > barbaro me preocupa solo lo de "rudimentario"... para eso > > usá lo que > > > > está en NHV que ya es static por si mismo. > > > > > > > > El 24 de abril de 2009 13:01, Juan <[email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] <mailto:[email protected] > >> > > > > <mailto:[email protected] > > <mailto:[email protected]> <mailto:[email protected] > > <mailto:[email protected]>>>> > > > escribió: > > > > > > > > > > > > Por ahora tengo un ISharedEngineProvider rudimentario > > que lo > > > creo en > > > > codigo y se lo pongo al > > > > NHibernate.Validator.Enviroment.SharedEngineProvider > > antes de > > > > configurar el NHibernate para asegurarme que es la misma > > > engine que > > > > va a utilizar NH, en los pre update/delete listeners. > > > > > > > > Pero queria quitarme esa dudita, ya que con la App/Web > > > config puedo > > > > hacer lo mismo, aunque yo lo hago a mano por el hecho de > > > tener la > > > > config de nhv en una archivo aparte. > > > > > > > > Gracias > > > > > > > > On 23 abr, 11:58, Dario Quintana > > > <[email protected] > > <mailto:[email protected]> > > <mailto:[email protected] > > <mailto:[email protected]>> > > > > <mailto:[email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] > > <mailto:[email protected]>>>> > > > > wrote: > > > > > Otra opción, que se podría usar para configurar con > > > > nhvalidator.cfg.xml: > > > > > .. > > > > > var vtor = new ValidatorEngine(); > > > > > vtor.Configure(); //lee el nhvalidator.cfg.xml > > > > > .. > > > > > > > > > > Cuando se lee de la configuración se instancia el > > > SharedEngine, > > > > pero la > > > > > instancia 'vtor' se la podría: > > > > > 1) "copiar" la instancia adentro del SharedEngine, > > entonces se > > > > usa la misma > > > > > instancia. > > > > > 2) descartarla, y que el SharedEngine cree otra > > instancia. > > > Pero > > > > ahí queda > > > > > feo porque, en cada aplicación se habrían creado por lo > > > menos dos > > > > > ValidatorEngine. > > > > > > > > > > 2009/4/23 Fabio Maulo <[email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] <mailto:[email protected]>> > > > > <mailto:[email protected] > > <mailto:[email protected]> <mailto:[email protected] > > <mailto:[email protected]>>>> > > > > > > > > > > > La razon es que es la unica forma de garantizar que > el > > > > ValidatorEngine sea > > > > > > realmente shared.Pero podes asignar el > > SharedEngine a mano. > > > > > > > > > > -- > > > > > Dario Quintanahttp://darioquintana.com.ar > > <http://darioquintana.com.ar> > > > <http://darioquintana.com.ar> > > > > <http://darioquintana.com.ar> > > > > > > > > > > > > > > > > > > > > -- > > > > Fabio Maulo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Fabio Maulo > > > > > > > > > > > > > > > > > > > > > -- > > Fabio Maulo > > > > > > > > > > -- Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
