Hi Markus! This idea comes closer to what I was thinking about, yes. I'm just wondering if this approach also works well together with the existing configuration schema and the possibility to add config nodes for differtent databases based on base-class types? Let's say I have 5 tenant databases and one legacy database, and I have to access the legacy database as well as the tenant's database within one scope, was it possible to do that?
What dou you think about the idea to keep the existing configuration schema (one config per base-class type instead of one config per tenant) but to have the possibility to inject the connection provider? Thanks Markus On 12 Jul., 07:49, Markus Zywitza <[email protected]> wrote: > Would the following strategy suit your intentions: > > 1) Create a database and configuration per tenant: > <activerecord> > <config tenant="cust1">...</config> > <config tenant="cust2">...</config> > <config tenant="cust3">...</config> > </activerecord> > > 2) Choosing tenant when starting a SessionScope: > string tenant = "cust1"; // rather get this from logon or something > using (var scope = new SessionScope(tenant) > { > // all here uses database for cust1 > > } > > I had this in mind as an idea, but didn't implement it so far. > > -Markus > > 2010/7/10 Markus <[email protected]>: > > > Thanks for the hint. I had a look at the class, but it's not exactly > > what I am looking for. Furthermore, the class is commented with > > 'Still very experimental and it's not bullet proof for all > > situations' (AR V2.0.0.0) > > > On 8 Jul., 23:47, Henry Conceição <[email protected]> wrote: > >> Check the DifferentDatabaseScope. > > >> On Jul 8, 4:51 am, Markus <[email protected]> wrote: > > >> > Hi all! > > >> > I'm developing a multi-tier application that will support multiple > >> > tenants. Each tenant's data will be isolated in a separate database. > >> > I'm looking for an elegant way to set the connection string during > >> > runtime depending on the tenant's identifier (e.g. ID, name ...). My > >> > idea is to use a custom ConnectionProvider that returns the > >> > appropriate tenant-specific connection string, something like that: > > >> > public class MyConnectionProvider : DriverConnectionProvider > >> > { > >> > private object tenant; > > >> > public MyConnectionProvider(object tenant) > >> > { > >> > this.tenant = tenant; > >> > } > > >> > protected override string ConnectionString > >> > { > >> > get > >> > { > >> > return BuildMyTenantConnectionString() > >> > } > >> > } > >> > } > > >> > On the other side I have my business methods that access the database > >> > using AR, say for example: > > >> > public IList GetCustomers(object tenant) > >> > { > >> > return Customer.FindAll(); > > >> > } > > >> > Now my question is how to inject/pass the 'tenant' parameter form my > >> > business method into my custom connection provider in order to access > >> > the data in the correct database? Are there any best practices? Or > >> > alternative solutions? > > >> > Thanks > > >> > Markus > > > -- > > 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 > > athttp://groups.google.com/group/castle-project-users?hl=en. > > -- 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.
