Your contributors should be registered in container under IConfigurationContributor interface. Then, the NHIntegration Facility will do container.ResolveAll<IConfigurationContributor>() and will call Process() on all of them.
As I suggested already, your contributors should be filtered by factory alias in order to not be applied for your both domains. For further details please look at the sources of NHIntegration Facility. On Sat, Oct 24, 2009 at 7:20 PM, wayne <[email protected]> wrote: > > hi > > i've tried to google for the contributor and didn't come up with much > - i also grepped the castle svn dir but that didn't do much either. > > here's what i tried: > > <code file='castle.config'> > > <components> > <component id="ReportingIdealConfigurationContributor" > type="Ideal.Reporting.Domain.IdealConfigurationContributor, > Ideal.Reporting.Domain"/> > <component id="RttmIdealConfigurationContributor" > type="Ideal.Rttm.Domain.IdealConfigurationContributor, > Ideal.Rttm.Domain"/> > </components> > > <facilities> > <facility id="nhibernatefaciltity" > isWeb="true" > > type="Castle.Facilities.NHibernateIntegration.NHibernateFacility, > Castle.Facilities.NHibernateIntegration" > > configurationBuilder="Ideal.Rttm.Web.FluentNHibernateConfigurationBuilder, > Ideal.Rttm.Web"> > <factory id="sessionFactory1"> > <settings> > <item key="show_sql">true</item> > <item > key="connection.provider">NHibernate.Connection.DriverConnectionProvider</ > item> > <item > key="connection.driver_class">NHibernate.Driver.SqlClientDriver</item> > <item key="connection.connection_string">Data > Source=.;Initial Catalog=reporting2;Integrated Security=SSPI;</item> > <item key="dialect">NHibernate.Dialect.MsSql2005Dialect</ > item> > <item > key="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, > NHibernate.ByteCode.Castle</item> > </settings> > <assemblies> > <assembly>Ideal.Reporting.Model</assembly> > </assemblies> > <!--<contributors> > <contributor key="ReportingIdealConfigurationContributor"/> > </contributors>--> > </factory> > > <factory id="sessionFactory2" alias="rttm"> > <settings> > <item key="show_sql">true</item> > <item > key="connection.provider">NHibernate.Connection.DriverConnectionProvider</ > item> > <item > key="connection.driver_class">NHibernate.Driver.SqlClientDriver</item> > <item key="connection.connection_string">Data > Source=.;Initial Catalog=reporting3;Integrated Security=SSPI;</item> > <item key="dialect">NHibernate.Dialect.MsSql2005Dialect</ > item> > <item > key="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, > NHibernate.ByteCode.Castle</item> > </settings> > <assemblies> > <assembly>Ideal.Rttm.Model</assembly> > </assemblies> > > </factory> > <!--<contributors> > <contributor key="RttmIdealConfigurationContributor"/> > </contributors>--> > </facility> > > </code> > > > and an example contributor: > > <code> > > public class IdealConfigurationContributor : > IConfigurationContributor > { > public void Process(string name, Configuration config) > { > var models = new PersistenceModel(); > > models.AddMappingsFromAssembly(typeof(Provider).Assembly); > > models.Conventions.Add(typeof > (ForeignKeyConventionOverride)); > models.Configure(config); > > if (AppSettings.GetConfigurationBoolean("RebuildDb", > false)) > { > var export = new SchemaExport(config); > var sb = new StringBuilder(); > TextWriter output = new StringWriter(sb); > export.Drop(true, true); > export.Execute(true, false, false, null, output); > export.Create(true, true); > } > > > } > } > > </code> > > i did find a conversation discussing the creation of the contributor - > which hinted at registering them and then associating them via the > following: > > <contributors> > <contributor key="RttmIdealConfigurationContributor"/> > </contributors> > > but contributors isn't an expected node name :( > > can anyone shed some light on this for me? > > cheers > > w:// > > > > > On 19 Oct, 11:40, Wayne Douglas <[email protected]> wrote: >> thanks for the poiinter :) >> >> how do i register more than one IConfigurationBuilder with the >> facility config tho? >> >> >> >> >> >> On Mon, Oct 19, 2009 at 11:16 AM, Valeriu Caraulean <[email protected]> >> wrote: >> >> > So, you want to use FluentNHibernate to configure factories built via >> > NHIntegration facility. >> >> > What I would try to do: >> >> > 1. Create a IConfigurationContributor for each of your domains. >> > 2. Check in contributors the name/factory-id to modify only the right >> > configuration >> > 3. Modify the configuration with FluentNHibernate. >> >> > This is just one way to achieve it. >> >> > On Mon, Oct 19, 2009 at 11:49 AM, Wayne Douglas <[email protected]> >> > wrote: >> >> >> hey - cheers for looking at this with me. >> >> >> not very experienced with nhib - i thought the assembly definition in >> >> the xml would point the factory to one assembly so it would only push >> >> the resulting sql creation scripts to that one db. i thought the one >> >> in the c# was just there to bootstrap it all. >> >> >> so i need to have 2 separate config builders? >> >> >> how do i wire one up with one factory configuration and the other with >> >> the other configuration? >> >> >> On Sun, Oct 18, 2009 at 12:22 PM, Valeriu Caraulean <[email protected]> >> >> wrote: >> >> >>> You have specified assemblies related to each session factory in XML >> >>> configuration. Why you do that again in code? >> >> >>> Your configuration builder adds two assemblies. Are those assemblies >> >>> each for different domain? Then why you're adding them both to >> >>> configuration? >> >> >>> On Sat, Oct 17, 2009 at 12:53 PM, Wayne Douglas <[email protected]> >> >>> wrote: >> >> >>>> very strange :s >> >> >>>> here is my config builder: >> >> >>>> <code> >> >> >>>> public class FluentNHibernateConfigurationBuilder : >> >>>> IConfigurationBuilder >> >>>> { >> >>>> #region IConfigurationBuilder Members >> >> >>>> public Configuration GetConfiguration(IConfiguration >> >>>> facilityConfiguration) >> >>>> { >> >>>> var defaultConfigurationBuilder = new >> >>>> DefaultConfigurationBuilder(); >> >>>> Configuration configuration = >> >>>> defaultConfigurationBuilder.GetConfiguration(facilityConfiguration); >> >> >>>> var models = new PersistenceModel(); >> >>>> models.AddMappingsFromAssembly(typeof(Provider).Assembly); >> >>>> models.AddMappingsFromAssembly(typeof(Report).Assembly); >> >>>> models.Conventions.Add(typeof(ForeignKeyConventionOverride)); >> >>>> models.Configure(configuration); >> >> >>>> if (AppSettings.GetConfigurationBoolean("RebuildDb", false)) >> >>>> { >> >>>> var export = new SchemaExport(configuration); >> >>>> var sb = new StringBuilder(); >> >>>> TextWriter output = new StringWriter(sb); >> >>>> export.Drop(true, true); >> >>>> export.Execute(true, false, false, null, output); >> >>>> export.Create(true, true); >> >>>> } >> >> >>>> return configuration; >> >>>> } >> >> >>>> #endregion >> >>>> } >> >> >>>> </code> >> >> >>>> any help? >> >> >>>> obv the classes Provider and Report come from 2 seperate assemblies >> >>>> and this config builder lives inside my web project which has >> >>>> references to both. >> >> >>>> w:// >> >> >>>> On Fri, Oct 16, 2009 at 11:08 PM, Valeriu Caraulean >> >>>> <[email protected]> wrote: >> >> >>>>> The config looks ok. >> >>>>> Are you sure your code is correct? >> >> >>>>> On Fri, Oct 16, 2009 at 10:06 PM, Wayne Douglas >> >>>>> <[email protected]> wrote: >> >> >>>>>> so... still not got this working :( >> >> >>>>>> here is the actual config i'm using: >> >> >>>>>> <code> >> >> >>>>>> <castle> >> >>>>>> <components> >> >>>>>> <component id="GenericRepository" type="Ideal.Web.Repository`1, >> >>>>>> Ideal.Web"/> >> >>>>>> </components> >> >>>>>> <facilities> >> >>>>>> <facility id="nhibernate" >> >>>>>> isWeb="true" >> >>>>>> >> >>>>>> type="Castle.Facilities.NHibernateIntegration.NHibernateFacility, >> >>>>>> Castle.Facilities.NHibernateIntegration" >> >>>>>> >> >>>>>> configurationBuilder="Ideal.Rttm.Web.FluentNHibernateConfigurationBuilder, >> >>>>>> Ideal.Rttm.Web"> >> >> >>>>>> <factory id="nhibernate.factory.session1"> >> >>>>>> <settings> >> >>>>>> <item key="show_sql">true</item> >> >>>>>> <item key="connection.provider"> >> >>>>>> NHibernate.Connection.DriverConnectionProvider >> >>>>>> </item> >> >>>>>> <item key="connection.driver_class"> >> >>>>>> NHibernate.Driver.SqlClientDriver >> >>>>>> </item> >> >>>>>> <item key="connection.connection_string"> >> >>>>>> Data Source=.;Initial Catalog=Reporting1;User >> >>>>>> Id=sa;Password=xxx; >> >>>>>> </item> >> >>>>>> <item key="dialect"> >> >>>>>> NHibernate.Dialect.MsSql2005Dialect >> >>>>>> </item> >> >>>>>> <item key="proxyfactory.factory_class"> >> >>>>>> NHibernate.ByteCode.Castle.ProxyFactoryFactory, >> >>>>>> NHibernate.ByteCode.Castle >> >>>>>> </item> >> >>>>>> </settings> >> >>>>>> <assemblies> >> >>>>>> <assembly>Ideal.Rttm.Model</assembly> >> >>>>>> </assemblies> >> >>>>>> </factory> >> >> >>>>>> <factory id="nhibernate.factory.session2" alias="reporting"> >> >>>>>> <settings> >> >>>>>> <item key="show_sql">true</item> >> >>>>>> <item key="connection.provider"> >> >>>>>> NHibernate.Connection.DriverConnectionProvider >> >>>>>> </item> >> >>>>>> <item key="connection.driver_class"> >> >>>>>> NHibernate.Driver.SqlClientDriver >> >>>>>> </item> >> >>>>>> <item key="connection.connection_string"> >> >>>>>> Data Source=.;Initial Catalog=Reporting2;User >> >>>>>> Id=sa;Password=xxx; >> >>>>>> </item> >> >>>>>> <item key="dialect"> >> >>>>>> NHibernate.Dialect.MsSql2005Dialect >> >>>>>> </item> >> >>>>>> <item key="proxyfactory.factory_class"> >> >>>>>> NHibernate.ByteCode.Castle.ProxyFactoryFactory, >> >>>>>> NHibernate.ByteCode.Castle >> >>>>>> </item> >> >>>>>> </settings> >> >>>>>> <assemblies> >> >>>>>> <assembly>Ideal.Reporting.Model</assembly> >> >>>>>> </assemblies> >> >>>>>> </factory> >> >> >>>>>> </facility> >> >>>>>> <facility id="atm" >> >>>>>> type="Castle.Facilities.AutomaticTransactionManagement.TransactionFacility, >> >>>>>> Castle.Facilities.AutomaticTransactionManagement" /> >> >>>>>> </facilities> >> >>>>>> </castle> >> >> >>>>>> </code> >> >> >>>>>> has anyone used the nh facility to do this? >> >> >>>>>> On Thu, Oct 15, 2009 at 3:48 PM, Valeriu Caraulean >> >>>>>> <[email protected]> wrote: >> >> >>>>>>> Different connection strings? >> >>>>>>> I mean, are they different? >> >> >>>>>>> On Thu, Oct 15, 2009 at 11:49 AM, Wayne Douglas >> >>>>>>> <[email protected]> wrote: >> >> >>>>>>>> Hi >> >> >>>>>>>> I'm using the nh facility to configure the following setup: >> >> >>>>>>>> i have 1 database which stores generic report configuration. >> >>>>>>>> and another which stores the actual report data. >> >> >>>>>>>> i also have 1 project for interacting with the report configuration >> >>>>>>>> database (entities and mappings etc) >> >>>>>>>> and another for interacting with the report data database (entities >> >>>>>>>> and mappings etc). >> >> >>>>>>>> i've used the following to create 2 factories: >> >> >>>>>>>> <code> >> >> >>>>>>>> <facilities> >> >>>>>>>> <facility id="nhibernate"> >> >>>>>>>> <factory id="nhibernate.factory.session1"> >> >>>>>>>> ... >> >>>>>>>> <assemblies> >> >>>>>>>> <assembly>ReportData.Model</assembly> >> >>>>>>>> </assemblies> >> >>>>>>>> </factory> >> >> >>>>>>>> <factory id="nhibernate.factory.session2" alias="reporting"> >> >>>>>>>> ... >> >>>>>>>> <assemblies> >> >>>>>>>> <assembly>Reporting.Model</assembly> >> >>>>>>>> </assemblies> >> >>>>>>>> </factory> >> >>>>>>>> </facility> >> >>>>>>>> </facilities> >> >> >>>>>>>> <code> >> >> >>>>>>>> the problem is is that even though nhibernate.factory.session1 and >> >>>>>>>> nhibernate.factory.session2 are looking at different databases and >> >>>>>>>> have different assemblies configured it always seems to create the >> >>>>>>>> tables for both models in both DBs? >> >> >>>>>>>> how do i tell nhibernate.factory.session1 to look at db1 and model1 >> >>>>>>>> and nhibernate.factory.session2 to look at db2 and model2? >> >> >>>>>>>> -- >> >>>>>>>> Cheers, >> >> >>>>>>>> w:// >> >> >>>>>> -- >> >>>>>> Cheers, >> >> >>>>>> w:// >> >> >>>> -- >> >>>> Cheers, >> >> >>>> w:// >> >> >> -- >> >> Cheers, >> >> >> w:// >> >> -- >> Cheers, >> >> w:// > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" 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/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
