José F . Romaniello
Mon, 02 Nov 2009 10:42:17 -0800
Mira yo tuve esa exacta pregunta, si estas trabajando con una base de datos legacy.. Tal vez puedas crear un dialecto customizado, de hecho yo lo hice.. para ese pequeño proyectito, recuerdo que Gustavo Ringel me ayudo. Basicamente hice esto:
public class DialectoXyz : MsSql2005Dialect
{
public DialectoXyz()
{
RegisterColumnType(DbType.String, "VARCHAR");
RegisterColumnType(DbType.DateTime, "smalldatetime");
}
}
Entonces, en el archivo de configuración de nhibernate, en vez de setear
MsSql2006Dialect, pongo el full qualified name a ese dialecto. Lo que me
queda algo así
<property
name="dialect">MiAssembly.NamespaceEtc.DialectoXyz, MiAssembly </property>
Tengo la sensación de que al haber hecho eso se debe romper otra cosa, pero
no se.. Funciona "bien".
El 2 de noviembre de 2009 15:24, Roberto Ramírez
<jramirezle...@gmail.com>escribió:
>
> Una disculpa hay un error en mi descripción anterior:
>
> Mi campo en la base de datos: [nombre] [varchar](100) NOT NULL,
>
> Agradezco un comentario de aclaración...
>
> On 2 nov, 10:21, Roberto Ramírez <jramirezle...@gmail.com> wrote:
> > Una pregunta, Nhibernate con new SchemaValidator(cfg).Validate(); me
> > esta validando que mis campos de tipo string en las tablas sean
> > NVARCHAR en lugar de VARCHAR:
> >
> > "Wrong column type in db.dbo.tables for column nombre. Found: varchar,
> > Expected NVARCHAR(100)"
> >
> > Mi campo en la base de datos: [nombre] [nvarchar](100) NOT NULL,
> > La definición en el mapping: <property name = "Nombre" column =
> > "nombre" not-null = "true" type = "System.String" length="100" />
> >
> > Existe alguna razón para ello? es que NHIbernate solo sabe tratar los
> > campos de tipo String como NVARCHAR?
> >
> > Saludos.
> >
> > On 2 nov, 09:44, José F. Romaniello <jfromanie...@gmail.com> wrote:
> >
> >
> >
> > > Mas sencillo que esto?
> > > new SchemaValidator(cfg).Validate();
> >
> > > ignorar el maxlength no es muy buena idea creo...Aunque tal vez este
> test no
> > > te joda con la maxlength:
> >
> > > ISessionFactory sessionFactory = cfg.BuildSessionFactory();
> > > using (ISession session = sessionFactory.OpenSession())
> > > {
> > > foreach (var entry
> > > in session.SessionFactory.GetAllClassMetadata())
> > > {
> > > session.CreateCriteria(entry.Key)
> > > .SetMaxResults(0).List();
> > > }
> > > }
> >
> > > El 2 de noviembre de 2009 14:39, Roberto Ramírez
> > > <jramirezle...@gmail.com>escribió:
> >
> > > > En realidad ocupo algo mas sencillo... requiero de saber si un campo/
> > > > tabla fue agregado, modificado o eliminado, en realidad no me
> interesa
> > > > validar maxlength u otra cosa mas.
> >
> > > > On 2 nov, 09:18, Fabio Maulo <fabioma...@gmail.com> wrote:
> > > > > new schemavalidation(....
> >
> > > > > El 2 de noviembre de 2009 14:11, Roberto Ramírez
> > > > > <jramirezle...@gmail.com>escribió:
> >
> > > > > > Buen día a la comunidad:
> >
> > > > > > ¿Existe alguna manera de validar el esquema de los mappings y/o
> clases
> > > > > > vs la base de datos al momento del BuildSessionFactory() o al
> crear
> > > > > > un .OpenSession() en la aplicación?
> >
> > > > > > Saludos cordiales.
> >
> > > > > --
> > > > > Fabio Maulo
> >
>
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
NHibernate-Hispano@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---