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 2.0
Reporter: Ron Grabowski
Assignee: Gilles Bayon
Priority: Minor
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.