Taylohtio/GeneralSSO/GeneralSSO.Server/CodeFiles/Repositories/Impl/AtomicRepositoryBase.cs

40 lines
1.1 KiB
C#

using NHibernate;
using Taloyhtio.GeneralSSO.Server.CodeFiles.Entities;
using Taloyhtio.GeneralSSO.Server.CodeFiles.Infrastructure.DataAccess;
namespace Taloyhtio.GeneralSSO.Server.CodeFiles.Repositories.Impl
{
public class AtomicRepositoryBase<TEntity, TKey> : RepositoryBase<TEntity, TKey> where TEntity : PersistentObject<TKey>
{
private ISessionSource sessionSource;
private ISession session;
public AtomicRepositoryBase(ISessionSource sessionSource)
{
this.sessionSource = sessionSource;
}
protected override ISession GetSession()
{
if (this.session == null)
{
// create session on 1st request
this.session = this.sessionSource.CreateSession();
}
return this.session;
}
public override void Save(TEntity entity)
{
base.Save(entity);
this.session.Flush();
}
public override void Delete(TEntity entity)
{
base.Delete(entity);
this.session.Flush();
}
}
}