[ 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.