using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace gehGassiApp.Core.Interfaces { /// /// Schnittstellenbeschreibung für einen Service für die Verwaltung von Entitäten /// /// Typ des Service public interface IService where T : class { #region Get /// /// Gibt eine Entität anhand der eindeutigen Id zurück /// /// Id der Entität /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Entität oder null, wenn nicht gefunden T Get(object id, bool noTracking = true); /// /// Gibt eine Entität anhand der eindeutigen Id zurück /// /// Id der Entität /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Entität oder null, wenn nicht gefunden Task GetAsync(object id, bool noTracking = true); /// /// Gibt alle Entitäten zurück /// /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Liste aller Entitäten IEnumerable GetAll(bool noTracking = true); /// /// Gibt alle Entitäten zurück /// /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Liste aller Entitäten Task> GetAllAsync(bool noTracking = true); /// /// Gibt eine Liste aller Entitäten zurück welche definierten Kriterien entsprechen /// /// Kriterien /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Liste gefundener Entitäten IEnumerable Find(Expression> predicate, bool noTracking = true); /// /// Gibt eine Liste aller Entitäten zurück welche definierten Kriterien entsprechen /// /// Kriterien /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Liste gefundener Entitäten Task> FindAsync(Expression> predicate, bool noTracking = true); /// /// Gibt eine Liste aller Entitäten zurück welche definierten Kriterien entsprechen /// /// Kriterien /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Liste gefundener Entitäten IQueryable Query(Expression> predicate, bool noTracking = true); /// /// Gibt eine Entität oder den Default wert zurück /// /// Kriterien /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Gefundene entität oder Default-Wert T SingleOrDefault(Expression> predicate, bool noTracking = true); /// /// Gibt eine Entität oder den Default wert zurück /// /// Kriterien /// Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten /// Gefundene entität oder Default-Wert Task SingleOrDefaultAsync(Expression> predicate, bool noTracking = true); #endregion #region CRUD /// /// Fügt eine Entität zum Repository hinzu /// /// Entität void Add(T entity); /// /// Fügt eine Liste von Entitäten zum Repository hinzu /// /// List von Entitäten void AddRange(IEnumerable entities); /// /// Entfernt eine Entität aus dem Repository /// /// Zu entfernende Entität void Remove(T entity); /// /// Entfernt eine Liste von Entitäten aus dem Repository /// /// Liste von Entitäten void RemoveRange(IEnumerable entities); #endregion #region Count /// /// Gibt die Anzahl aller Entitäten zurück /// /// Anzahl int Count(); /// /// Gibt die Anzahl aller Entitäten zurück /// /// Anzahl Task CountAsync(); #endregion #region Commit / UnitOfWork /// /// Schließt Daten-Änderungen ab und speichert die selben /// int Commit(); /// /// Schließt Daten-Änderungen ab und speichert die selben /// Task CommitAsync(); #endregion } }