Seems like "SetProperties" on Configuration class is overriding any
properties initially set. Instead call "ExposeConfiguration" _after_
setting the database information.
var properties = new Dictionary<string, string>();
properties.Add("current_session_context_class", (isInWeb
()) ? "web" : "thread_static");
factory_instance = Fluently
.Configure()
.Database(
MsSqlConfiguration
.MsSql2008
.ConnectionString(c=>c.FromConnectionStringWithKey
("somevalue"))
.ShowSql)
.Mappings(x=>x.FluentMappings.AddFromAssembly(GetType
().Assembly)))
.ExposeConfiguration(c=> c.AddProperties(properties))
.BuildSessionFactory();
HTH
-Joe
On Jul 23, 6:30 am, James Gregory <[email protected]> wrote:
> Errors? What's happening when you don't use LinFu?
>
>
>
> On Thu, Jul 23, 2009 at 11:29 AM, mhnyborg <[email protected]> wrote:
>
> > It works fine for me - but ONLY with LinFu why?
>
> > sessionFactory = Fluently.Configure()
> > .Database(
> > MsSqlConfiguration.MsSql2005
> > .ShowSql() // MVN TODO remove this
> > when going into production
> > .ConnectionString(c =>
> > c.FromConnectionStringWithKey
> > ("connectionString"))
> > .ProxyFactoryFactory
> > ("NHibernate.ByteCode.LinFu.ProxyFactoryFactory,
> > NHibernate.ByteCode.LinFu")
> > )
> > .Mappings(m =>
> > {
>
> > m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly
> > ());
>
> > m.HbmMappings.AddFromAssembly(Assembly.GetExecutingAssembly());
> > })
> > .ExposeConfiguration(cfg =>
>
> > {
>
> > cfg.EventListeners.PostLoadEventListeners = new
> > IPostLoadEventListener[] { new EntityBasePostLoadEventListener() };
>
> > })
> > .BuildSessionFactory();
>
> > On Jul 22, 2:27 pm, James Gregory <[email protected]> wrote:
> > > Seems to be a theme with my responses... You definitely shouldn't have to
> > do
> > > that!
> > > I'll investigate when I get home tonight.
>
> > > On Wed, Jul 22, 2009 at 1:24 PM, Brian Sullivan <[email protected]
> > >wrote:
>
> > > > I did a bit more investigation after learning that the Castle proxy
> > > > factory factory is used by default in FNH. When I removed any attempt
> > > > to set this myself, that particular problem went away. However, that
> > > > exposed a different error, one dealing with a particular ClassMap,
> > > > that read "Could not format discriminator value to SQL string of
> > > > entity Campaign." I was a bit surprised, because my subclass
> > > > discrimination had been working for quite a while. The method call
> > > > looked like this:
>
> > > > DiscriminateSubClassesOnColumn<int>("intCampaignTypeID")
> > > > .SubClass<InspectionCampaign>(1, x => {} )
> > > > .SubClass<OBPCampaign>(2, x=> {});
>
> > > > After some searching about problems with the
> > > > DiscriminateSubClassesOnColumn method, I found a couple of instances
> > > > where people seemed to be having similar problems (http://
> > > > stackoverflow.com/questions/326174/nhibernate-mapping-with-a-class-
> > > > hierarchy-whose-base-class-is-abstract-and-the-di and
> > > >https://forum.hibernate.org/viewtopic.php?t=974225).
>
> > > > It turns out that when I add a "default" discriminator value to the
> > > > method call, everything's hunky dory.
>
> > > > DiscriminateSubClassesOnColumn<int>("intCampaignTypeID", -1)
> > > > .SubClass<InspectionCampaign>(1, x => {} )
> > > > .SubClass<OBPCampaign>(2, x=> { });
>
> > > > This bothers me a bit, though, because this "default" value doesn't
> > > > really exist. All of the values in the database are either 1 or 2,
> > > > and the Campaign base class is abstract anyway, so I don't want
> > > > NHibernate trying to create one in any case.
>
> > > > Was there a recent change that made this default value necessary? As
> > > > I said, the original method call without the default had been working
> > > > for a while.
>
> > > > Thanks for all your responses!
>
> > > > On Jul 21, 2:19 pm, James Gregory <[email protected]> wrote:
> > > > > You most definitely should not have to do that.
>
> > > > > On Tue, Jul 21, 2009 at 8:05 PM, Mikael Henriksson <
> > [email protected]
> > > > >wrote:
>
> > > > > > This is the only way I could get it working.
> > > > > > 1.Create a dictionary with all the required settings. For some
> > reason
> > > > > > Fluent does not set these no matter how I try.
> > > > > > 2. When you configure nhibernate
> > > > > > (fluentConfig.BuildConfiguration().SetProperties(DICTIONARY) you
> > need
> > > > to
> > > > > > supply this dictionary.
>
> > > > > > IDictionary<string, string> properties = new<
> > > >http://www.google.com/search?q=new+msdn.microsoft.com>Dictionary
> > > > > > <string, string>();
> > > > > > properties.Add("proxyfactory.factory_class",
> > > > "NHibernate.ByteCode.Castle.ProxyFactoryFactory,
> > > > > > NHibernate.ByteCode.Castle");
> > > > > > properties.Add("dialect",
> > "NHibernate.Dialect.SQLite");
> > > > > > properties.Add("connection.driver_class",
> > > > > > "NHibernate.Driver.SQLite20Driver");
> > > > > > properties.Add("connection.connection_string", @"Data
>
> > Source=D:\Projects\privat\WexioBridgen\src\Client\App_Data\wexiobridgen.db"
> > > > > > );
>
> > > > > > var fluentConfig = Fluently.Configure()
> > > > > > .Database(SQLiteConfiguration.Standard.UsingFile(
> > > > > > PathToSqlLiteDb))
> > > > > > .Mappings(m => m.FluentMappings
> > > > > > .Add<ClubMap>()
> > > > > > .Add<ScheduleMap>()
> > > > > > .Add<PersonMap>()
> > > > > > .Add<ContactTypeMap>()
> > > > > > .Add<ConventionRestrictionMap>()
> > > > > > .Add<TournamentTypeMap>()
> > > > > > .Add<TournamentMap>()
> > > > > > .Add<ResultTypeMap>()
> > > > > > .Add<ResultMap>()
> > > > > > .Add<NewsMap>())
> > > > > > .ExposeConfiguration(BuildSchema);
>
> > > > > > *var nhConfig = fluentConfig.BuildConfiguration().
> > > > > > SetProperties(properties);*
> > > > > > _sessionFactory = nhConfig.BuildSessionFactory();
> > > > > > _session = _sessionFactory.OpenSession();
>
> > > > > > 2009/7/21 Ben Hyrman <[email protected]>
>
> > > > > >> To double-check, you did copy NHibernate.ByteCode.Castle.dll to
> > your
> > > > bin,
> > > > > >> right?
>
> > > > > >> On Tue, Jul 21, 2009 at 1:18 PM, Brian Sullivan<
> > [email protected]>
> > > > > >> wrote:
>
> > > > > >> > Thanks for the replies, guys!
>
> > > > > >> > James: I will try to create a failing test and get back to you.
> > I
> > > > > >> > didn't realize that FNH defaulted to the Castle proxy factory
> > > > > >> > factory. Good to know, and a reasonable default, I think.
>
> > > > > >> > Ben: I remember having this same problem working with the beta,
> > so
> > > > I
> > > > > >> > doubt it's that. I decided to stick with 2.0.1 until it went GA
> > to
> > > > > >> > see if the problem went away, either by changes in FNH or NH
> > itself.
>
> > > > > >> > On Jul 21, 12:44 pm, Ben Hyrman <[email protected]> wrote:
> > > > > >> >> Here's one that is working fine for me against 2.1 beta
> > (haven't
> > > > gone
> > > > > >> >> to GA yet). I don't quite see where we differ.... I can go to
> > 2.1GA
> > > > > >> >> and see if I run into your issue
>
> > > > > >> >> var fluentConfig = Fluently.Configure()
> > > > > >> >> .Database(MsSqlConfiguration.MsSql2005
> > > > > >> >> .ConnectionString(c => c
> > > > > >> >> .Is("Data Source=........"))
>
> > > > .ProxyFactoryFactory("NHibernate.ByteCode.LinFu.ProxyFactoryFactory,
> > > > > >> >> NHibernate.ByteCode.LinFu")
> > > > > >> >> .Cache(c =>
> > > > > >> >> c.ProviderClass("NHibernate.Caches.SysCache.SysCacheProvider,
> > > > > >> >> NHibernate.Caches.SysCache"))
> > > > > >> >> .UseReflectionOptimizer()
> > > > > >> >> .DoNot.ShowSql())
> > > > > >> >> .Mappings(m =>
> > > > > >> >> {
> > > > > >> >> m.HbmMappings.AddFromAssemblyOf<IEntity>();
>
> > m.FluentMappings.AddFromAssemblyOf<IEntity>();
> > > > > >> >> });
>
> > > > > >> >> On Tue, Jul 21, 2009 at 12:14 PM, James Gregory<
> > > > > >> [email protected]> wrote:
> > > > > >> >> > Strange. It's not a requirement, FNH defaults to using Castle
> > for
> > > > the
> > > > > >> proxy
> > > > > >> >> > factory factory; however, you should still be able to specify
> > it
> > > > > >> manually.
> > > > > >> >> > Can you create a failing test?
>
> > > > > >> >> > On Tue, Jul 21, 2009 at 5:37 PM, Brian Sullivan <
> > > > > >> [email protected]>
> > > > > >> >> > wrote:
>
> > > > > >> >> >> I'm trying to convert an application I've written using FNH
> > and
> > > > > >> >> >> NH2.0.1GA to use the new 2.1GA libraries, but I'm running
> > into a
> > > > > >> snag
> > > > > >> >> >> trying to specify my proxy factory factory. My
> > configuration
> > > > looks
> > > > > >> >> >> like this:
>
> > > > > >> >> >> SessionFactory =
> > > > > >> >> >> Fluently.Configure()
> > > > > >> >> >> .Database(
> > > > > >> >> >> MsSqlConfiguration.MsSql2005
> > > > > >> >> >> .ConnectionString(
> > > > > >> >> >> c => c.Is
> > > > > >> >> >> (ConfigurationManager.ConnectionStrings
> > > > > >> >> >> ["josubscriptioncb"].ConnectionString))
> > > > > >> >> >> .ProxyFactoryFactory
> > > > > >> >> >> ("NHibernate.ByteCode.Castle.ProxyFactoryFactory,
> > > > > >> >> >> NHibernate.ByteCode.Castle")
> > > > > >> >> >> )
> > > > > >> >> >> .Mappings(m =>
>
> > > > > >> >> >> m.FluentMappings.AddFromAssemblyOf<Campaign>()
>
> > > > > >> >> >> .ConventionDiscovery.AddFromAssemblyOf<Campaign>
> > > > > >> >> >> ())
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Fluent NHibernate" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---