I have a property of type uint on my entity. Something like:
public class Enity
{
   public uint Count {get;set;}
}
When I try to persist that into the SQL Server 2005 database, I get an exception
Dialect does not support DbType.UInt32
What would be the easiest way to workaround this. I could for example store it as long in the DB. I only don't know how to tell that to NHibernate.
The cleanest, most official solution would probably be to write a user type.
Take an example, like this one and adapt it. If you have many uint's, it is worth to have a user type.
<property name="Prop" type="UIntUserType"/>
                        Haven't tried this so not sure if this will work for you but you could try creating your own Dialect and registering that in the web.config/app.config
Dialect class:
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>
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With