Mindennapi gondolatmorzsák

Képek-, gondolatok-, és minden más!

Hit enter after type your search item
Mindennapi gondolatmorzsák

Képek-, gondolatok-, és minden más!

NHibernate: boolean kezelés MSSQL alatt

Avatar photo
You are Reading..

NHibernate: boolean kezelés MSSQL alatt

Az MSSQL nem szereti a boolean mezőt. Minden esetben BIT típusú mezőt hoz létre. De ha én egy Criteria -t hozok létre, ahol boolean típusú értéket szeretnék beadni, felháborodottan közli,  hogy ezt Ő nem tudja értelmezni!

Mi ilyenkor a teendő? Az NHibernate -et meg kell tanítani arra, hogy jól kezelje:

A megoldás az NHibernate Configuration osztályának létrehozásakor (vagy a konfigurációs file -ba) be kell csempészni a következőt:

<add key=”hibernate.query.substitutions” value=”true 1, false 0″ />

        public ISessionFactory MSSQLBuildSessionFactory()
        {
            NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
            Dictionary<string, string> props = new Dictionary<string, string>();
            String connectionString = String.Format("Data Source={0};Initial Catalog={1};User Id={2};Password={3}", _serverName, _dataBase, _userName, _password);
            props.Add(Environment.ConnectionDriver, typeof(SqlClientDriver).FullName);
            props.Add(Environment.Dialect, "NHibernate.Dialect.MsSql2008Dialect");
            props.Add(Environment.ConnectionProvider, typeof(DriverConnectionProvider).FullName);
            props.Add(Environment.ConnectionString, connectionString);
            props.Add(Environment.ShowSql, _showSQL.ToString());
            props.Add(Environment.ProxyFactoryFactoryClass, typeof(NHibernate.Bytecode.DefaultProxyFactoryFactory).AssemblyQualifiedName);
            //A lényeg!!
            props.Add("hibernate.query.substitutions", "true 1, false 0");

            cfg.AddProperties(props);
            OnFlowConfigurationHelper.ApplyConfiguration(cfg);
            OnFlowCustomConfigurationHelper.ApplyCustomConfiguration(cfg);
            return cfg.BuildSessionFactory();
        }