Our modules are setup in such a way that they use the same credentials
as the core framework does. 

Are you wanting to do this:

 string username = GetUsername();
 string password = GetPassword();
 DataSource dataSource = new DataSource();
 dataSource.ConnectionString = GenerateConnString(username, password);
 moduleSqlMapper.DataSource = dataSource;

DataSource's constructor is marked as obsolete. To get around compile
time warnings you could do something like this:

 XmlNode dataSourceNode = GenerateDataSourceNode(username, password);
 // borrowed from DomSqlMapBuilder
 XmlSerializer serializer = new XmlSerializer(typeof(DataSource));
 DataSource dataSource = (DataSource)serializer.Deserialize(new 
XmlNodeReader(nodeDataSource));
 moduleSqlMapper.DataSource = dataSource;

A class to generate an in memory sqlMap config XmlDocument that can be
passed into Configure would be a good wiki post.

--- Tuncay Baskan <[EMAIL PROTECTED]> wrote:

> Ron,
> 
> Thank you very much for you answer! I've never thought of using an
> in-memory xml stream for configuration. Excellent tip!!
> 
> I also wonder how you dynamically fill username and password. Again
> you modify in memory xml?
> 
>   <dataSource
>    name="Dynamically Filled in at runtime"
>    connectionString="Dynamically Filled in at runtime" />
>  </database>
> 
> On 7/21/05, Ron Grabowski <[EMAIL PROTECTED]> wrote:
> > I'm working on project whose core framework is built using
> IBatisNet.
> > It also supports pluggable modules via IBatisNet. This is one of
> our
> > example module dao classes. BaseSqlMapDao comes from here:
> > 
> > http://tinyurl.com/8uks6
> >
>
http://svn.apache.org/repos/asf/ibatis/trunk/cs/npetshop/NPetshop.Persistence/MapperDao/BaseSqlMapDao.cs
> > 
> > public class ModuleNewsArticleSqlMapDao : BaseSqlMapDao
> > {
> >  private static SqlMapper moduleSqlMapper = null;
> > 
> >  protected override SqlMapper GetSystemSqlMap()
> >  {
> >   // TODO: add double-check
> >   if (moduleSqlMapper == null)
> >   {
> >    // warning: Configure is depreciated
> >    moduleSqlMapper =
> SqlMapper.Configure(GetModuleSqlMapConfigPath());
> > 
> >    moduleSqlMapper.DataSource = base.GetSystemSqlMap().DataSource;
> >   }
> >   return moduleSqlMapper;
> >  }
> > 
> >  public IList GetMany()
> >  {
> >   return ExecuteQueryForList("GetMany", null);
> >  }
> > 
> >  // snip
> > 
> > }
> > 
> > Modules are placed in their own directory and are required to have
> > their own ModuleSqlMap.config file. A ModuleSqlMap.config file
> looks
> > something like this:
> > 
> > <sqlMapConfig>
> >  <database>
> >   <provider name="sqlServer1.1"/>
> >   <dataSource
> >     name="Dynamically Filled in at runtime"
> >     connectionString="Dynamically Filled in at runtime" />
> >  </database>
> >  <sqlMaps>
> >   <sqlMap embedded="Resources.NewsArticle.xml, Foo.Bar.NewsArticle"
> />
> >  </sqlMaps>
> > </sqlMapConfig>
> > 
> > We have providers.config at the root of the application so it does
> not
> > need to be specified.
> > 
> > That code was originally written for an older version of IBatisNet.
> > There are overloads now that allow you build a SqlMapper instance
> from
> > an XmlDocument, embedded resource, etc. You might be able to do
> away
> > with a ModuleSqlMap.config file. I like having the external file
> > becuase I can turn caching on or off on a per module basis without
> > recompiling the application.
> > 
> > While this exact code doesn't exist yet:
> > 
> >  DomSqlMapBuilder builder = new DomSqlMapBuilder();
> >  builder.AppProperty("SELECT_KEY", "SELECT @@IDENTITIY");
> >  builder.AddSqlMap("newsModelSqlMap.xml");
> >  builder.CacheModelsEnabled = true;
> >  _mapper = builder.Configure();
> > 
> > It could be implemented by building a sqlMap.config xml document in
> > memory and passing that in to the existing Configure method.
> > 
> > - Ron
> > 
> > --- Tuncay Baskan <[EMAIL PROTECTED]> wrote:
> > 
> > > 1) I want my developers (specifically module owners) to write
> only
> > > SqlMap files. Because there is no need to declare same
> "provider",
> > > same "settings", same "database" options in each module. To do
> this I
> > > think I need a different configuration API than the current one.
> I
> > > tried to analyze
> IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.
> > > It simply reads file references from sqlMapConfig/sqlMaps and
> > > constructs internal data structures. Is there any way that I can
> > > programmatically specify which SqlMap files will be parsed and
> > > loaded?
> > >
> > > 2) Since the application is multithreaded I wonder if having
> multiple
> > > SqlMappers cause problems?
> > >
> > > I know I wrote too much in this email. :-) I tried my best to
> explain
> > > the situation well..
> > >
> > > --
> > > /tb.
> > >
> > 
> > 
> 
> 
> -- 
> /tb.
> 

Reply via email to