This works absolutely fine without fluent. Bit gutted that it's so hard (impossible?) to use it with fnh, proper happy I got it working. Thanks for all the help :)
----------------------------- e-wayne <at> isit.gd t-07525 424 882 On 25 Oct 2009, at 12:06 PM, Valeriu Caraulean <[email protected]> wrote: > > 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 -~----------~----~----~----~------~----~------~--~---
