Aquí podría ser tu PUBLICIDAD


Cómo asignar uint en NHibernate con SQL Server 2005

votos
5

Tengo una propiedad de tipo uint en mi entidad. Algo como:

public class Enity
{
   public uint Count {get;set;}
}

Cuando trato de persistir en la base de datos de SQL Server 2005, recibo una excepción

Dialect no es compatible con DbType.UInt32

¿Cuál sería la forma más fácil de solucionar esto? Podría, por ejemplo, almacenarlo tanto tiempo en la base de datos. Solo que no sé cómo decirle eso a NHibernate.

Publicado el 12/03/2009 a las 17:25
fuente por usuario Krzysztof Kozmic
En otros idiomas...        العربية       

4 respuestas

votos
4

La solución más limpia y oficial sería escribir un tipo de usuario.

Tome un ejemplo, como este y adáptelo. Si tiene muchos uint, vale la pena tener un tipo de usuario.

<property name="Prop" type="UIntUserType"/>
Respondida el 27/05/2009 a las 10:10
fuente por usuario Stefan Steinegger


Aquí podría ser tu PUBLICIDAD


votos
2

No lo he intentado, así que no estoy seguro si esto funcionará para ti, pero podrías intentar crear tu propio dialecto y registrarlo en la web.config / app.config

Clase dialecto:

public class MyDialect:MsSql2005Dialect
{
    public MyDialect()
    {            
        RegisterColumnType(System.Data.DbType.UInt32, "bigint");            
    }
}

Web.config:

configuration>
 <configSections>
  <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
 </configSections>

                <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
   <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property>
   <property name="connection.connection_string">
    Server=127.0.0.1; Initial Catalog=thedatabase; Integrated Security=SSPI
   </property>
   <property name="dialect">MyDialect</property>
   <property name="current_session_context_class">managed_web</property>
  </session-factory>
 </hibernate-configuration>
    <!-- other app specific config follows -->

</configuration>
Respondida el 21/05/2009 a las 06:19
fuente por usuario KaraT

votos
1
<property name="Prop" type="long"/>
Respondida el 12/03/2009 a las 05:43
fuente por usuario Alex Reitbort

votos
0

Podría intentar agregar otra propiedad privada "espejo".

public class Enity
{
   public uint Count {get;set;}

   private long CountAsLong 
   { 
     get { return Convert.ToInt64(Count); } 
     set { Count = Convert.ToUInt(value); }
   }
}

<property name="CountAsLong" type="long"/>

Por supuesto, debe hacer esto solo si no puede ser resuelto por el mapeo.

Respondida el 20/05/2009 a las 10:22
fuente por usuario Stefan Steinegger