2009-03-12 7 views
5

Tengo una propiedad de tipo uint en mi entidad. Algo así como:Cómo asignar uint en NHibernate con SQL Server 2005

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

Cuando trato de persistir en el que la base de datos de SQL Server 2005, me sale una excepción

dialecto no soporta DbType.UInt32

¿Cuál sería el 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 decírselo a NHibernate.

Respuesta

4

el más limpio, solución más oficial probablemente sería escribir un tipo de usuario.

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

<property name="Prop" type="UIntUserType"/> 
+0

Sí, eso es lo que finalmente terminé haciendo. Gracias por ayudar chicos, todos ustedes. –

1
<property name="Prop" type="long"/> 
+0

puede entonces usted debe describir el problema un poco mejor –

+0

Este trabajo tuvo * * para mí ... con type = "largo" SchemaExport exporta el campo como BIGINT –

+0

qué versión de NHibernate utiliza? –

0

Puede intentar agregar otro particular "espejo" de la propiedad.

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, usted debe hacer esto única si no pudiera ser resuelto por la asignación.

2

No he probado esto así que no sé si esto va a trabajar para usted, pero usted podría intentar crear su propio dialecto y el registro de que en el 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> 
Cuestiones relacionadas