In case anyone wants to know, I found the solution for loading maps files from 
a DLL in V3. I looked in the UnitTests. I did not immediately find it since  a 
lot of the class names have changed. Here is some example code for creating an 
IDataMapper:


=============================

  string uri = "assembly://MyApp/Config/SqlMap.config";
  IResource resource = ResourceLoaderRegistry.GetResource(uri);

  IConfigurationEngine engine = new DefaultConfigurationEngine();
  engine.RegisterInterpreter(new XmlConfigurationInterpreter(resource));

  IMapperFactory mapperFactory = engine.BuildMapperFactory();
  mapper = ((IDataMapperAccessor)mapperFactory).DataMapper;

=============================

cheers,
Vince


  ----- Original Message ----- 
  From: Christopher DeGuise 
  To: [email protected] 
  Sent: Wednesday, January 14, 2009 8:06 PM
  Subject: Re: file paths for config files in n-tier architecture


  The way I handled this was to use the code from Example 4.4 and drive all 
IBatis request through the custom mapper. In addition I altered the InitMapper 
method to look something like this:

  DomSqlMapBuilder builder = new DomSqlMapBuilder();
  XmlDocument sqlMapConfig = 
Resources.GetEmbeddedResourceAsXmlDocument("fully.qualified.embedded.resource.SqlMap.config,
 SomeAssembly");
  _Mapper = builder.Configure(sqlMapConfig);       

  Make sure you mark your config files as embedded resources. With my projects 
I do not ship any raw .xml/.config files, they are all bundled inside a library.

  Hope that helps.
  Chirs



  On Wed, Jan 14, 2009 at 11:06 AM, Robin Silver <[email protected]> wrote:

    Hey all,



    I have 4 facets to my application, Web, Test, Services, Data.  



    Web – the website

    Test – the token test project… ;)

    Services – interface between web and underlying persistence layer (and 
additional services)

    Data – my data model, POCO's etc.



    Assume the scenario where there is a "List All Customer's" button on my 
page.  



    Admin User clicks it and web calls CustomerService.ListAllCustomers().  
This in turn calls the iBatis structure sort of like…



    ArrayList al = (ArrayList)Mapper.Instance().QueryForList("SelectAll", null);

                

    The SqlMap.config and CustomerMapping.xml files are in my Services project. 
 



    When I run this, I get the error: 



    Unable to load file via resource "SqlMap.config" as resource. Cause : Could 
not find file 'C:\Projects\TestProject\TestProject.Web\SqlMap.config'.



    It seems to want to load the config from the calling project (web), not the 
project in which the actual code resides(services).  When I look at the 
NPetStore example, the config files are in the web also. 



    My question is, is there any way to configure it to look for files in the 
services project instead?  I don't want to have any reference to IBatis in my 
Web if at all possible.



    Thx,

    Rob

Reply via email to