// *********************************************************************** // Assembly : FCS.Lib.Utility // Author : FH // Created : 03-10-2015 // // Last Modified By : FH // Last Modified On : 02-24-2022 // *********************************************************************** // // Copyright (C) 2022 FCS Frede's Computer Services. // This program is free software: you can redistribute it and/or modify // it under the terms of the Affero GNU General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // Affero GNU General Public License for more details. // // You should have received a copy of the Affero GNU General Public License // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // // // *********************************************************************** using System; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace FCS.Lib.Utility { /// /// Interface IRepositoryEx /// /// The type of the t entity public interface IRepositoryEx where TEntity : class { /// /// Get all entities synchronous /// /// Predicate /// Task<System.Boolean> Task AnyAsync(Expression> predicate); /// /// Find matching entity asynchronous /// /// Predicate /// Task<TEntity> Task FindAsync(Expression> predicate); /// /// Find first matching entity asynchronous /// /// Predicate /// Task<TEntity> Task FirstAsync(Expression> predicate); /// /// Get first entity matching query or default entity asynchronous /// /// Predicate /// Task<TEntity> Task FirstOrDefaultAsync(Expression> predicate); /// /// Add an entity /// /// The entity. void Add(TEntity entity); /// /// Attach the entity /// /// The entity. void Attach(TEntity entity); /// /// Delete the entity /// /// The entity. void Delete(TEntity entity); /// /// Anies the specified predicate. /// /// The predicate. /// true if XXXX, false otherwise. bool Any(Expression> predicate); /// /// Get entity by id /// /// The identifier. /// TEntity TEntity GetById(string id); /// /// Find first entity matching query /// /// Predicate /// TEntity TEntity First(Expression> predicate); /// /// Find first matching entity or default entity /// /// Predicate /// TEntity TEntity FirstOrDefault(Expression> predicate); /// /// Find all matching entities matching query /// /// Predicate /// IQueryable<TEntity> IQueryable Find(Expression> predicate); /// /// Get all entities /// /// IQueryable<TEntity> IQueryable All(); } }