kreta/Framework/Entities/Generic/IEntityDataAccessor.cs
2024-03-13 00:33:46 +01:00

75 lines
3.7 KiB
C#

using System.Collections.Generic;
using Kreta.Framework.Collections.Generic;
namespace Kreta.Framework.Entities.Generic
{
/// <summary>
/// Entitások adatbázisműveleteit végző objektumának felülete.
/// </summary>
public interface IEntityDataAccessor<EntityType>
where EntityType : Kreta.Framework.Entities.Entity
{
/// <summary>
/// Betölti egy entitás állapotát az adatbázisból.
/// </summary>
/// <param name="entity">A betöltendő entitás</param>
/// <param name="entityId">Az entitás adatbázisbeli azonosítója</param>
/// <returns>True, ha sikeres; egyébként false</returns>
bool LoadEntity(EntityType entity, int entityId);
/// <summary>
/// Oszlopszűrten beltölti egy entitás állapotát az adatbázisból
/// </summary>
/// <param name="entity">A betöltendő entitás</param>
/// <param name="entityId">Az entitás adatbázisbeli azonosítója</param>
/// <param name="columnFilterMode">A szűrés módja, megengedő vagy tiltó</param>
/// <param name="columns">A szűrendő oszlopok felsorolása</param>
/// <returns>True, ha sikeres; egyébként False</returns>
bool FilteredLoadEntity(EntityType entity, int entityId, ColumnFilterMode columnFilterMode, IEnumerable<string> columns);
/// <summary>
/// Betölt egy entitás listát a megadott szűrő feltétellel.
/// </summary>
/// <param name="collection">A feltöltendő lista</param>
/// <param name="filter">A szűrő SQL töredék</param>
/// <param name="commandParameters">a szűrőben megadott paraméterek commandBinding atalakitasa</param>
void LoadWithFilter(IEntityCollection<EntityType> collection, string filter, Dictionary<string, object> commandParameters);
/// <summary>
/// Oszlopszűrten betölt egy entitás listát a megadott szűrő feltétellel.
/// </summary>
/// <param name="collection">A feltöltendő lista</param>
/// <param name="filter">A szűrő SQL töredék</param>
/// <param name="columnFilterMode">A szűrés módja, megengedő vagy tiltó</param>
/// <param name="columns">A szűrendő oszlopok felsorolása</param>
/// <param name="commandParameters">a szűrőben megadott paraméterek commandBinding atalakitasa</param>
void LoadWithFilter(IEntityCollection<EntityType> collection, string filter, ColumnFilterMode columnFilterMode, IEnumerable<string> columns, Dictionary<string, object> commandParameters);
/// <summary>
/// Létrehoz egy új entitás példányt az adatbázisban.
/// </summary>
/// <param name="entity">A létrehozandó entitás</param>
void InsertEntity(EntityType entity);
/// <summary>
/// Módosít egy entitás példányt az adatbázisban.
/// </summary>
/// <param name="entity">A módosítandó entitás</param>
/// <returns>True, ha sikeres; egyébként false</returns>
bool UpdateEntity(EntityType entity);
/// <summary>
/// Módosítja egy entitás példány asszociációs kapcsolómezőit az adatbázisban.
/// </summary>
/// <param name="entity">A módosítandó entitás</param>
/// <returns>True, ha sikeres; egyébként false</returns>
bool UpdateAssociations(EntityType entity);
/// <summary>
/// Töröl egy entitás példányt az adatbázisból.
/// </summary>
/// <param name="entity">A törlendő entitás</param>
/// <param name="logikai">Logikai törlés (Archiv flag)</param>
void DeleteEntity(EntityType entity, bool logikai = true);
}
}