<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>ChristianASP.NET Blog - Wilson O/R Mapper</title>
    <link>http://blog.christianasp.net/</link>
    <description>Talking about ASP.NET and Web Hosting</description>
    <image>
      <url>http://blog.christianasp.net/themes/casp/feedimg.gif</url>
      <title>ChristianASP.NET Blog - Wilson O/R Mapper</title>
      <link>http://blog.christianasp.net/</link>
    </image>
    <language>en-us</language>
    <copyright>ChristianASP.NET</copyright>
    <lastBuildDate>Fri, 10 Mar 2006 05:01:13 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>david@christianasp.net</managingEditor>
    <webMaster>david@christianasp.net</webMaster>
    <item>
      <trackback:ping>http://blog.christianasp.net/Trackback.aspx?guid=af87d2fc-ae69-47fc-bec1-f64eb8f80deb</trackback:ping>
      <pingback:server>http://blog.christianasp.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.christianasp.net/PermaLink,guid,af87d2fc-ae69-47fc-bec1-f64eb8f80deb.aspx</pingback:target>
      <dc:creator>David Neal</dc:creator>
      <wfw:comment>http://blog.christianasp.net/CommentView,guid,af87d2fc-ae69-47fc-bec1-f64eb8f80deb.aspx</wfw:comment>
      <wfw:commentRss>http://blog.christianasp.net/SyndicationService.asmx/GetEntryCommentsRss?guid=af87d2fc-ae69-47fc-bec1-f64eb8f80deb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">As a follow-up to my <a href="http://blog.christianasp.net/2006/02/23/DataManagerClassWithIsolatedContextForWilsonORMapper.aspx">previous
post</a> on creating a DataManager class for WilsonORMapper that uses the IsolatedContext,
I'm posting a download that includes updates for Paul Welter's excellent <a href="http://community.codesmithtools.com/files/9/templates/entry8609.aspx">CodeSmith
templates for WilsonORMapper</a>.  These templates are intended for use with
Web projects.  The DataManager stores the IsolatedContext instance in the current
HttpContext so that the same IsolatedContext is used throughout the current Request.<br /><br />
To use the new templates, just unzip the files in the /Internal folder where the existing
DataManager templates are stored.<br /><br />
FYI, although I've confirmed that they compile, I have not tested the VB.NET and VB.NET
2.0 DataManager versions.  If you find any issues, I would appreciate your feedback.<br /><br /><a href="http://www.christianasp.net/downloads/UpdatedDataManagerCodeSmithTemplates.zip">Download
the Templates</a><br /><br /><p></p><img width="0" height="0" src="http://blog.christianasp.net/aggbug.ashx?id=af87d2fc-ae69-47fc-bec1-f64eb8f80deb" /></body>
      <title>CodeSmith Templates for IsolatedContext</title>
      <guid isPermaLink="false">http://blog.christianasp.net/PermaLink,guid,af87d2fc-ae69-47fc-bec1-f64eb8f80deb.aspx</guid>
      <link>http://blog.christianasp.net/2006/03/10/CodeSmithTemplatesForIsolatedContext.aspx</link>
      <pubDate>Fri, 10 Mar 2006 05:01:13 GMT</pubDate>
      <description>As a follow-up to my &lt;a href="http://blog.christianasp.net/2006/02/23/DataManagerClassWithIsolatedContextForWilsonORMapper.aspx"&gt;previous
post&lt;/a&gt; on creating a DataManager class for WilsonORMapper that uses the IsolatedContext,
I'm posting a download that includes updates for Paul Welter's excellent &lt;a href="http://community.codesmithtools.com/files/9/templates/entry8609.aspx"&gt;CodeSmith
templates for WilsonORMapper&lt;/a&gt;.&amp;nbsp; These templates are intended for use with
Web projects.&amp;nbsp; The DataManager stores the IsolatedContext instance in the current
HttpContext so that the same IsolatedContext is used throughout the current Request.&lt;br&gt;
&lt;br&gt;
To use the new templates, just unzip the files in the /Internal folder where the existing
DataManager templates are stored.&lt;br&gt;
&lt;br&gt;
FYI, although I've confirmed that they compile, I have not tested the VB.NET and VB.NET
2.0 DataManager versions.&amp;nbsp; If you find any issues, I would appreciate your feedback.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.christianasp.net/downloads/UpdatedDataManagerCodeSmithTemplates.zip"&gt;Download
the Templates&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.christianasp.net/aggbug.ashx?id=af87d2fc-ae69-47fc-bec1-f64eb8f80deb" /&gt;</description>
      <comments>http://blog.christianasp.net/CommentView,guid,af87d2fc-ae69-47fc-bec1-f64eb8f80deb.aspx</comments>
      <category>ASP.NET</category>
      <category>ASP.NET 2.0</category>
      <category>Wilson O/R Mapper</category>
    </item>
    <item>
      <trackback:ping>http://blog.christianasp.net/Trackback.aspx?guid=e0d6b253-b2c2-41cd-bb1f-411f7209effe</trackback:ping>
      <pingback:server>http://blog.christianasp.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.christianasp.net/PermaLink,guid,e0d6b253-b2c2-41cd-bb1f-411f7209effe.aspx</pingback:target>
      <dc:creator>David Neal</dc:creator>
      <wfw:comment>http://blog.christianasp.net/CommentView,guid,e0d6b253-b2c2-41cd-bb1f-411f7209effe.aspx</wfw:comment>
      <wfw:commentRss>http://blog.christianasp.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e0d6b253-b2c2-41cd-bb1f-411f7209effe</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">In case someone else would like to know
how to create a singleton DataManager class for WilsonORMapper that uses IsolatedContext
and works in ASP.NET...<br /><br /><a href="http://www.christianasp.net/downloads/DataManager.cs.txt">View DataManager.cs</a><br /><br /><font face="Courier New">using System.Configuration;<br />
using System.IO;<br />
using System.Reflection;<br />
using System.Web;<br />
using Wilson.ORMapper;<br /><br />
namespace Portal.Data<br />
{<br />
    /// &lt;summary&gt;<br />
    /// The DataManager class is the singleton instance of the ObjectSpace
class<br />
    /// &lt;/summary&gt;<br />
    public sealed class DataManager<br />
    {<br />
        private const string MAPPING_FILE = "Mapping.config";<br />
        private static readonly Guid CONTEXT_KEY = Guid.NewGuid();<br />
        <br />
        /// &lt;summary&gt;The application connection
string read from app.config&lt;/summary&gt;        <br />
        /// &lt;example&gt;<br />
        /// Add the following key to the "appSettings"
section of your config:<br />
        /// &lt;code&gt;&lt;![CDATA[<br />
        ///     &lt;configuration&gt;<br />
        ///          
 &lt;appSettings&gt;<br />
        ///          
     &lt;add key="IMI.Portal.Framework.Data.ConnectionString"
value="Data Source=(local);Initial Catalog=DATABASE;User ID=USERNAME;Password=PASSWORD;"
/&gt;<br />
        ///          
 &lt;/appSettings&gt;<br />
        ///     &lt;/configuration&gt;<br />
        /// ]]&gt;&lt;/code&gt;<br />
        /// &lt;/example&gt;<br />
        public static readonly string ConnectionString
= ConfigurationSettings.AppSettings["ConnectionString"];<br />
        public static readonly string CurrentProvider
= ConfigurationSettings.AppSettings["Provider"];<br /><br />
        /// &lt;summary&gt;The singletion instance of
an ObjectSpace Class&lt;/summary&gt;<br />
        private static ObjectSpace objectSpace; // =
GetDefaultInstance();<br />
        private static object syncLock = new object();<br /><br />
        private DataManager()<br />
        { }<br /><br />
        #region public static ObjectSpace ObjectSpace<br /><br />
        /// &lt;summary&gt;The singleton method for
retrieving the global ObjectSpace&lt;/summary&gt;<br />
        public static ObjectSpace ObjectSpace<br />
        {<br />
            get<br />
            {<br />
                if (objectSpace
== null)<br />
                {<br />
                  
 lock (syncLock)<br />
                  
 {<br />
                  
     if (objectSpace == null)<br />
                  
     {<br />
                  
         objectSpace = GetDefaultInstance();<br />
                  
     }<br />
                  
 }<br />
                }<br />
                <br />
                HttpContext
context = HttpContext.Current;<br />
                if (context
!= null)<br />
                {<br />
                  
 ObjectSpace isolatedContext = (ObjectSpace) context.Items[CONTEXT_KEY];<br />
                  
 if (isolatedContext == null)<br />
                  
 {<br />
                  
     // Cache the isolated context in the current request so that
it is used<br />
                  
     // throughout the entire request<br /><br />
                  
     isolatedContext = objectSpace.IsolatedContext;<br />
                  
     context.Items[CONTEXT_KEY] = isolatedContext;<br />
                  
 }<br />
                  
 return isolatedContext;<br />
                }<br />
                else<br />
                {<br />
                  
 return objectSpace;<br />
                }<br />
            }<br />
        }<br /><br />
        #endregion<br /><br />
        #region private static ObjectSpace GetDefaultInstance()<br /><br />
        private static ObjectSpace GetDefaultInstance()<br />
        {<br />
            Assembly assembly = Assembly.GetAssembly(typeof(DataManager));<br />
            <br />
            using (Stream mappingStream
= assembly.GetManifestResourceStream(<br />
                typeof(DataManager), 
<br />
                MAPPING_FILE))<br />
            {<br /><br />
                switch(CurrentProvider)<br />
                {<br />
                  
 case "MySQL":<br /><br />
                  
     return new ObjectSpace(<br />
                  
         mappingStream, 
<br />
                  
         ConnectionString, 
<br />
                  
         GetMySQLProvider(),<br />
                  
         20, 5);<br /><br />
                  
 case "PostgreSQL":<br /><br />
                  
     return new ObjectSpace(<br />
                  
         mappingStream, 
<br />
                  
         ConnectionString, 
<br />
                  
         GetPostgreSQLProvider(),<br />
                  
         20, 5);<br /><br />
                  
 // TODO: Oracle?<br /><br />
                  
 default:<br /><br />
                  
     return new ObjectSpace(<br />
                  
         mappingStream, 
<br />
                  
         ConnectionString,<br />
                  
         Provider.MsSql,<br />
                  
         20, 5);<br /><br />
                }<br />
                <br />
            }<br />
        }<br /><br />
        #endregion<br /><br />
        #region private static CustomProvider GetMySQLProvider()<br /><br />
        private static CustomProvider GetMySQLProvider()<br />
        {<br />
            //Provider provider; 
<br />
            CustomProvider provider; 
<br />
            provider=new CustomProvider("MySql.Data",
"MySql.Data.MySqlClient.MySqlConnection", "MySql.Data.MySqlClient.MySqlDataAdapter"); 
<br />
            provider.StartDelimiter=""; 
<br />
            provider.EndDelimiter=""; 
<br />
            provider.LineTerminator=";"; 
<br />
            provider.IdentityQuery= "SELECT
LAST_INSERT_ID()"; 
<br />
            provider.SelectPageQuery="SELECT
* LIMIT {0} OFFSET {1}"; 
<br />
            provider.ParameterPrefix
= "?"; 
<br />
            provider.GuidDelimiter =
"'";<br /><br />
            return provider;<br />
            <br />
        }<br /><br />
        #endregion<br /><br />
        #region private static CustomProvider GetPostgreSQLProvider()<br /><br />
        private static CustomProvider GetPostgreSQLProvider()<br />
        {<br />
            // Npgsql, the .NET provider
for PostgreSQL can be found here:<br />
            // http://pgfoundry.org/projects/npgsql<br /><br />
            CustomProvider provider; 
<br />
            provider=new CustomProvider("Npgsql",
"Npgsql.NpgsqlConnection", "Npgsql.NpgsqlDataAdapter"); 
<br />
            provider.StartDelimiter="["; 
<br />
            provider.EndDelimiter="]"; 
<br />
            provider.LineTerminator=";"; 
<br />
            provider.IdentityQuery= "SELECT
currval('{1}_{0}_seq')"; 
<br />
            provider.SelectPageQuery="SELECT
* LIMIT {0} OFFSET {1}"; 
<br />
            provider.ParameterPrefix
= ":"; 
<br />
            //not sure about this<br />
            provider.GuidDelimiter =
"'";<br /><br />
            return provider;<br />
            <br />
        }<br /><br />
        #endregion<br />
    }<br />
}<br />
        
<br /></font><img width="0" height="0" src="http://blog.christianasp.net/aggbug.ashx?id=e0d6b253-b2c2-41cd-bb1f-411f7209effe" /></body>
      <title>DataManager Class with IsolatedContext for WilsonORMapper</title>
      <guid isPermaLink="false">http://blog.christianasp.net/PermaLink,guid,e0d6b253-b2c2-41cd-bb1f-411f7209effe.aspx</guid>
      <link>http://blog.christianasp.net/2006/02/23/DataManagerClassWithIsolatedContextForWilsonORMapper.aspx</link>
      <pubDate>Thu, 23 Feb 2006 02:43:01 GMT</pubDate>
      <description>In case someone else would like to know how to create a singleton DataManager class for WilsonORMapper that uses IsolatedContext and works in ASP.NET...&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.christianasp.net/downloads/DataManager.cs.txt"&gt;View DataManager.cs&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;using System.Configuration;&lt;br&gt;
using System.IO;&lt;br&gt;
using System.Reflection;&lt;br&gt;
using System.Web;&lt;br&gt;
using Wilson.ORMapper;&lt;br&gt;
&lt;br&gt;
namespace Portal.Data&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;/// The DataManager class is the singleton instance of the ObjectSpace
class&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public sealed class DataManager&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private const string MAPPING_FILE = "Mapping.config";&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static readonly Guid CONTEXT_KEY = Guid.NewGuid();&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;summary&amp;gt;The application connection
string read from app.config&amp;lt;/summary&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;example&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// Add the following key to the "appSettings"
section of your config:&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;///&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;lt;appSettings&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;///&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;add key="IMI.Portal.Framework.Data.ConnectionString"
value="Data Source=(local);Initial Catalog=DATABASE;User ID=USERNAME;Password=PASSWORD;"
/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;///&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;lt;/appSettings&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// ]]&amp;gt;&amp;lt;/code&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;/example&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static readonly string ConnectionString
= ConfigurationSettings.AppSettings["ConnectionString"];&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static readonly string CurrentProvider
= ConfigurationSettings.AppSettings["Provider"];&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;summary&amp;gt;The singletion instance of
an ObjectSpace Class&amp;lt;/summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static ObjectSpace objectSpace; // =
GetDefaultInstance();&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static object syncLock = new object();&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private DataManager()&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#region public static ObjectSpace ObjectSpace&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;summary&amp;gt;The singleton method for
retrieving the global ObjectSpace&amp;lt;/summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static ObjectSpace ObjectSpace&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (objectSpace
== null)&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;lock (syncLock)&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (objectSpace == null)&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;objectSpace = GetDefaultInstance();&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;HttpContext
context = HttpContext.Current;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (context
!= null)&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;ObjectSpace isolatedContext = (ObjectSpace) context.Items[CONTEXT_KEY];&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;if (isolatedContext == null)&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Cache the isolated context in the current request so that
it is used&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// throughout the entire request&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;isolatedContext = objectSpace.IsolatedContext;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;context.Items[CONTEXT_KEY] = isolatedContext;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;return isolatedContext;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;return objectSpace;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#endregion&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#region private static ObjectSpace GetDefaultInstance()&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static ObjectSpace GetDefaultInstance()&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Assembly assembly = Assembly.GetAssembly(typeof(DataManager));&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;using (Stream mappingStream
= assembly.GetManifestResourceStream(&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;typeof(DataManager), 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MAPPING_FILE))&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch(CurrentProvider)&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;case "MySQL":&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return new ObjectSpace(&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mappingStream, 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ConnectionString, 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GetMySQLProvider(),&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;20, 5);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;case "PostgreSQL":&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return new ObjectSpace(&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mappingStream, 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ConnectionString, 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GetPostgreSQLProvider(),&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;20, 5);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;// TODO: Oracle?&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;default:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return new ObjectSpace(&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mappingStream, 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ConnectionString,&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Provider.MsSql,&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;20, 5);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#endregion&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#region private static CustomProvider GetMySQLProvider()&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static CustomProvider GetMySQLProvider()&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Provider provider; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CustomProvider provider; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider=new CustomProvider("MySql.Data",
"MySql.Data.MySqlClient.MySqlConnection", "MySql.Data.MySqlClient.MySqlDataAdapter"); 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.StartDelimiter=""; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.EndDelimiter=""; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.LineTerminator=";"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.IdentityQuery= "SELECT
LAST_INSERT_ID()"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.SelectPageQuery="SELECT
* LIMIT {0} OFFSET {1}"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.ParameterPrefix
= "?"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.GuidDelimiter =
"'";&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return provider;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#endregion&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#region private static CustomProvider GetPostgreSQLProvider()&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static CustomProvider GetPostgreSQLProvider()&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Npgsql, the .NET provider
for PostgreSQL can be found here:&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// http://pgfoundry.org/projects/npgsql&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CustomProvider provider; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider=new CustomProvider("Npgsql",
"Npgsql.NpgsqlConnection", "Npgsql.NpgsqlDataAdapter"); 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.StartDelimiter="["; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.EndDelimiter="]"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.LineTerminator=";"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.IdentityQuery= "SELECT
currval('{1}_{0}_seq')"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.SelectPageQuery="SELECT
* LIMIT {0} OFFSET {1}"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.ParameterPrefix
= ":"; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//not sure about this&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;provider.GuidDelimiter =
"'";&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return provider;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#endregion&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&lt;/font&gt;&lt;img width="0" height="0" src="http://blog.christianasp.net/aggbug.ashx?id=e0d6b253-b2c2-41cd-bb1f-411f7209effe" /&gt;</description>
      <comments>http://blog.christianasp.net/CommentView,guid,e0d6b253-b2c2-41cd-bb1f-411f7209effe.aspx</comments>
      <category>Components</category>
      <category>Wilson O/R Mapper</category>
    </item>
    <item>
      <trackback:ping>http://blog.christianasp.net/Trackback.aspx?guid=a488165e-ba13-4e2d-bb82-04975b05b54d</trackback:ping>
      <pingback:server>http://blog.christianasp.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.christianasp.net/PermaLink,guid,a488165e-ba13-4e2d-bb82-04975b05b54d.aspx</pingback:target>
      <dc:creator>David Neal</dc:creator>
      <wfw:comment>http://blog.christianasp.net/CommentView,guid,a488165e-ba13-4e2d-bb82-04975b05b54d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.christianasp.net/SyndicationService.asmx/GetEntryCommentsRss?guid=a488165e-ba13-4e2d-bb82-04975b05b54d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">A minor release, but looks like some <a href="http://weblogs.asp.net/pwilson/archive/2006/01/24/436388.aspx">major
improvements</a>, such as a new SQL Server 2005 provider that takes advantage of some
new features for better performance.<br /><br />
I've plugged Paul Wilson's O/R Mapper before, but I don't think it would hurt to reiterate
that it is a fantastic tool.  I strongly encourage you to take it for a real
test run (read: complete a small but real-world application with it).  Reading
the feature list and taking it for a quick spin just won't do it justice.  If
you've not used an O/R mapper before, it takes a little time to adopt the right mindset. 
However, I think the benefits will become very clear once you see what it is capable
of.  The beauty of WilsonORMapper is in its simplicity.  
<br /><br />
I also recommend you try <a href="http://www.loresoft.com/Applications/Templates/default.aspx">Paul
Welter's CodeSmith templates</a> for WilsonORMapper.  You can point <a href="http://www.codesmithtools.com/">CodeSmith</a> at
your database and generate a complete set of business classes ready to handle just
about everything you need to do.  I have not yet tried the new CodeSmith templates
from <a href="http://www.sapientdevelopment.com/WORMFramework.aspx">Jason Bunting</a>.<br /><br />
Full <a href="http://weblogs.asp.net/pwilson/archive/2006/01/24/436388.aspx">list
of changes</a> can be found on Paul's blog.<br /><p></p><img width="0" height="0" src="http://blog.christianasp.net/aggbug.ashx?id=a488165e-ba13-4e2d-bb82-04975b05b54d" /></body>
      <title>WilsonORMapper v4.2.1 Released</title>
      <guid isPermaLink="false">http://blog.christianasp.net/PermaLink,guid,a488165e-ba13-4e2d-bb82-04975b05b54d.aspx</guid>
      <link>http://blog.christianasp.net/2006/01/25/WilsonORMapperV421Released.aspx</link>
      <pubDate>Wed, 25 Jan 2006 05:23:32 GMT</pubDate>
      <description>A minor release, but looks like some &lt;a href="http://weblogs.asp.net/pwilson/archive/2006/01/24/436388.aspx"&gt;major
improvements&lt;/a&gt;, such as a new SQL Server 2005 provider that takes advantage of some
new features for better performance.&lt;br&gt;
&lt;br&gt;
I've plugged Paul Wilson's O/R Mapper before, but I don't think it would hurt to reiterate
that it is a fantastic tool.&amp;nbsp; I strongly encourage you to take it for a real
test run (read: complete a small but real-world application with it).&amp;nbsp; Reading
the feature list and taking it for a quick spin just won't do it justice.&amp;nbsp; If
you've not used an O/R mapper before, it takes a little time to adopt the right mindset.&amp;nbsp;
However, I think the benefits will become very clear once you see what it is capable
of.&amp;nbsp; The beauty of WilsonORMapper is in its simplicity.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
I also recommend you try &lt;a href="http://www.loresoft.com/Applications/Templates/default.aspx"&gt;Paul
Welter's CodeSmith templates&lt;/a&gt; for WilsonORMapper.&amp;nbsp; You can point &lt;a href="http://www.codesmithtools.com/"&gt;CodeSmith&lt;/a&gt; at
your database and generate a complete set of business classes ready to handle just
about everything you need to do.&amp;nbsp; I have not yet tried the new CodeSmith templates
from &lt;a href="http://www.sapientdevelopment.com/WORMFramework.aspx"&gt;Jason Bunting&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Full &lt;a href="http://weblogs.asp.net/pwilson/archive/2006/01/24/436388.aspx"&gt;list
of changes&lt;/a&gt; can be found on Paul's blog.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.christianasp.net/aggbug.ashx?id=a488165e-ba13-4e2d-bb82-04975b05b54d" /&gt;</description>
      <comments>http://blog.christianasp.net/CommentView,guid,a488165e-ba13-4e2d-bb82-04975b05b54d.aspx</comments>
      <category>Components</category>
      <category>Wilson O/R Mapper</category>
    </item>
  </channel>
</rss>