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