[ 
https://issues.apache.org/jira/browse/IBATISNET-262?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gilles Bayon closed IBATISNET-262.
----------------------------------

       Resolution: Fixed
    Fix Version/s: DataMapper 3.0

In SVN

Add comment, change constructor and apply.
Thanks

> Refactor duplicate code for opening session into DataMapperLocalSessionScope
> ----------------------------------------------------------------------------
>
>                 Key: IBATISNET-262
>                 URL: https://issues.apache.org/jira/browse/IBATISNET-262
>             Project: iBatis for .NET
>          Issue Type: Improvement
>    Affects Versions: DataMapper 3.0
>            Reporter: Ron Grabowski
>            Assignee: Gilles Bayon
>            Priority: Minor
>             Fix For: DataMapper 3.0
>
>         Attachments: DataMapperLocalSessionScope.patch
>
>
> Move duplicate code for creating the local session into a class level scope 
> that has access to the private members of DataMapper:
> private class DataMapperLocalSessionScope : IDisposable
> {
>     private readonly ISession session;
>     private readonly bool isSessionLocal = false;
>     public DataMapperLocalSessionScope(DataMapper dataMapper)
>     {
>         isSessionLocal = false;
>         session = dataMapper.sessionStore.CurrentSession;
>         if (session == null)
>         {
>             session = dataMapper.sessionFactory.OpenSession();
>             isSessionLocal = true;
>         }
>     }
>     public ISession Session
>     {
>         get { return session; }
>     }
>     public void Dispose()
>     {
>         if (isSessionLocal)
>         {
>             session.Close();
>         }
>     }
> }
> to avoid duplicating code across 22 methods. The code in each of the Query... 
> methods is now much shorter:
> public IList QueryForList(string statementId, object parameterObject)
> {
>     using (DataMapperLocalSessionScope sessionScope = new 
> DataMapperLocalSessionScope(this))
>     {
>         IMappedStatement statement = 
> modelStore.GetMappedStatement(statementId);
>         return statement.ExecuteQueryForList(sessionScope.Session, 
> parameterObject);
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to