using System;
using System.Threading.Tasks;
namespace gehGassi.Core.Interfaces
{
///
/// Definiert eine Schnittstelle welche Operationen in einem Repository gruppiert und bestätigt (speichert)
///
public interface IUnitOfWork : IDisposable
{
///
/// Gibt ein Repository im Kontext der UnitOfWork zurück
///
/// Typ (Klasse)
/// IRepository oder null, wenn nicht verfügbar
IRepository GetRepository() where T : class;
///
/// Schließt Daten-Änderungen ab und speichert die selben
///
/// Name des Benutzers
/// Gibt an, dass kein Audit-Eintrag erstellt werden soll, auch wenn Audit aktiviert ist
int Commit(string userName, bool noAudit);
///
/// Schließt Daten-Änderungen ab und speichert die selben
///
/// Name des Benutzers
/// Gibt an, dass kein Audit-Eintrag erstellt werden soll, auch wenn Audit aktiviert ist
Task CommitAsync(string userName, bool noAudit);
}
}