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