<html> <head> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Accessing Persistent Classes From Different .NET Applications</title> <link rel="stylesheet" type="text/css" href="../../style.css"> </head> <body> <div class="CommonContent"> <div class="CommonContentArea"> <h1>Accessing Persistent Classes From Different .NET Applications</h1><div id="TOC"><div id="TOCinner"><span class="TOCtitle">Contents</span><div class="TOCcontents"><ul><li><a href ="#Problem">Problem</a></li><li><a href ="#Reason">Reason</a></li><li><a href ="#Solution">Solution</a></li></ul></li></ul></div></div></div><p><font color="#990000">This topic applies to .NET version only</font> </p><a name="Problem"></a><h2>Problem</h2> <p>Accessing db4o database created and filled in with a .NET application or library from another .NET application or library shows an empty database.</p><a name="Reason"></a><h2>Reason</h2> <p>db4o class name format in db4o consists of the full class name and assembly name:</p> <p><code>Namespace.ClassName, AssemblyName</code></p> <p>Two different .NET applications (libraries) usually have different assembly names. If you do not use <a href="../implementation_strategies/aliases.html" class="wikiLink">aliasing</a>, the class name will be appended with the current application assembly name.</p><a name="Solution"></a><h2>Solution</h2> <p>In order to access db4o persistent classes from different applications (libraries) you will need to use an <a href="../implementation_strategies/aliases.html" class="wikiLink">Alias</a>. For example:</p> <p><b>Application1.exe ("Application1" assembly):</b></p> <p><code>objectContainer.Set(new MyClasses.Pilot("David Barrichello",99))</code></p> <p><code>// internally the class is saved as "MyClasses.Pilot, Application1".</code></p> <p><b>Application2.exe ("Application2" assembly):</b></p> <span name="cs_wiki_filter" csw_filters="cs"> <p>c#:</p> <p><code>// create an Alias for the MyClasses.Pilot, Application1:</code></p> <p><code>IConfiguration configuration = Db4oFactory.NewConfiguration();</code></p> <p><code>configuration.AddAlias(new TypeAlias("MyClasses.Pilot, Application1", " MyClasses.Pilot, Application2"));</code></p> <p><code>IObjectContainer container = Db4oFactory.OpenFile(configuration, "reference.db4o");</code></p> <p><code>// now you query as usual</code></p> <p><code>IObjectSet result = container.Get(new Test());</code></p> </span> <span name="cs_wiki_filter" csw_filters="vb"> <p>VB:</p> <p><code>// create an Alias for the MyClasses.Pilot, Application1:</code></p> <p><code>Dim configuration As IConfiguration = Db4oFactory.NewConfiguration()</code></p> <p><code>configuration.AddAlias(new TypeAlias("MyClasses.Pilot, Application1", " MyClasses.Pilot, Application2"))</code></p> <p><code>Dim container As IObjectContainer = Db4oFactory.OpenFile(configuration, "reference.db4o")</code></p> <p><code>// now you query as usual</code></p> <p><code>Dim result As IObjectSet = container.Get(New Test())</code></p> </span> <p>For more information see <a href="../object_lifecycle/class_name_format_in_.net.html" class="wikiLink">Class Name Format In .NET</a> and <a href="../implementation_strategies/aliases.html" class="wikiLink">Aliases</a>.</p></div> </div> <div id="footer"> This revision (7) was last Modified 2007-05-09T07:20:53 by Tetyana. </div> </body> </html>