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