Advertisement
yambroskin

Untitled

Jul 22nd, 2018
310
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using EleWise.ELMA.Actions;
  2. using EleWise.ELMA.ComponentModel;
  3. using EleWise.ELMA.Model.Common;
  4. using EleWise.ELMA.Model.Entities;
  5. using NHibernate;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq.Expressions;
  9.  
  10. namespace EleWise.ELMA.Model.Managers
  11. {
  12.     /// <summary>
  13.     /// Типизированный интерфейс менеджера сущности
  14.     /// </summary>
  15.     /// <typeparam name="T">Тип класса сущности</typeparam>
  16.     [ExtensionPoint(false, ComponentType.Server, ServiceScope.Application)]
  17.     public interface IEntityManager<T> : IEntityManager where T : IEntity
  18.     {
  19.         /// <summary>
  20.         /// Создать новую сущность (без записи в БД)
  21.         /// </summary>
  22.         /// <returns>Сущность</returns>
  23.         [NotNull]
  24.         T Create();
  25.  
  26.         /// <summary>
  27.         /// Загрузить по идентификатору. Если не найдена - вызывается исключение
  28.         /// </summary>
  29.         /// <param name="id">Идентификатор</param>
  30.         /// <returns>Сущность</returns>
  31.         [NotNull]
  32.         T Load(object id);
  33.  
  34.         /// <summary>
  35.         /// Загрузить по идентификатору. Если не найдена - возвращается null
  36.         /// </summary>
  37.         /// <param name="id">Идентификатор сущности</param>
  38.         /// <returns>Сущность или null</returns>
  39.         [CanBeNull]
  40.         T LoadOrNull(object id);
  41.  
  42.         /// <summary>
  43.         /// Загрузить по идентификатору. Если не найдена - возвращается новая сущность
  44.         /// </summary>
  45.         /// <param name="id">Идентификатор сущности</param>
  46.         /// <returns>Сущность</returns>
  47.         [NotNull]
  48.         T LoadOrCreate(object id);
  49.  
  50.         /// <summary>
  51.         /// Загрузить по уникальному идентификатору. Если не найдена - возвращается новая сущность
  52.         /// </summary>
  53.         /// <param name="uid">Уникальный идентификатор сущности</param>
  54.         /// <returns>Сущность</returns>
  55.         [NotNull]
  56.         T LoadOrCreate(System.Guid uid);
  57.  
  58.         /// <summary>
  59.         /// Загрузить по уникальному идентификатору. Если не найдена - вызывается исключение
  60.         /// </summary>
  61.         /// <param name="uid">Уникальный идентификатор сущности</param>
  62.         /// <returns>Сущность</returns>
  63.         [NotNull]
  64.         T Load(System.Guid uid);
  65.  
  66.         /// <summary>
  67.         /// Загрузить по уникальному идентификатору. Если не найдена - возвращается null
  68.         /// </summary>
  69.         /// <param name="uid">Уникальный идентификатор сущности</param>
  70.         /// <returns>Сущность или null</returns>
  71.         [CanBeNull]
  72.         T LoadOrNull(System.Guid uid);
  73.  
  74.         /// <summary>
  75.         /// Проверить возможно ли сохранить данную сущность в текущем контексте выполнения
  76.         /// </summary>
  77.         /// <param name="obj">Сущность</param>
  78.         /// <returns>Результат проверки</returns>
  79.         ActionCheckResult CanSave(T obj);
  80.  
  81.         /// <summary>
  82.         /// Сохранить сущность в БД
  83.         /// </summary>
  84.         /// <param name="obj">Сущность</param>
  85.         void Save(T obj);
  86.  
  87.         /// <summary>
  88.         /// Проверить возможно ли удалить данную сущность в текущем контексте выполнения
  89.         /// </summary>
  90.         /// <param name="obj">Сущность</param>
  91.         /// <returns>Результат проверки</returns>
  92.         ActionCheckResult CanDelete(T obj);
  93.  
  94.         /// <summary>
  95.         /// Удалить сущность в БД
  96.         /// </summary>
  97.         /// <param name="obj">Сущность</param>
  98.         void Delete(T obj);
  99.  
  100.         /// <summary>
  101.         /// Обновить сущность
  102.         /// </summary>
  103.         /// <param name="obj">Сущность</param>
  104.         void Refresh(T obj);
  105.  
  106.         /// <summary>
  107.         /// Обновить сущность
  108.         /// </summary>
  109.         /// <param name="obj">Сущность</param>
  110.         void Refresh(T obj, LockMode mode);
  111.  
  112.         /// <summary>
  113.         /// Сущность не сохранялась в базе
  114.         /// </summary>
  115.         /// <param name="obj">Сущность</param>
  116.         bool IsNew(T obj);
  117.  
  118.         /// <summary>
  119.         /// Проверить, есть ли несохраненные изменения в сущности
  120.         /// </summary>
  121.         /// <param name="obj">Сущность</param>
  122.         /// <returns>True, если есть</returns>
  123.         bool IsDirty(T obj);
  124.  
  125.         /// <summary>
  126.         /// Проверить, есть ли несохраненные изменения в сущности
  127.         /// </summary>
  128.         /// <param name="obj">Сущность</param>
  129.         /// <param name="originalState">Оригинальное состояние сущности</param>
  130.         /// <returns>True, если есть</returns>
  131.         bool IsDirty(T obj, object originalState);
  132.  
  133.         /// <summary>
  134.         /// Получить идентификаторы измененных свойств
  135.         /// </summary>
  136.         /// <param name="obj">Сущность</param>
  137.         /// <returns>Список идентификаторов свойств</returns>
  138.         System.Guid[] GetDirtyPropertyUids(T obj);
  139.  
  140.         /// <summary>
  141.         /// Получить идентификаторы измененных свойств
  142.         /// </summary>
  143.         /// <param name="obj">Сущность</param>
  144.         /// <param name="originalState">Оригинальное состояние сущности</param>
  145.         /// <returns>Список идентификаторов свойств</returns>
  146.         System.Guid[] GetDirtyPropertyUids(T obj, object originalState);
  147.  
  148.         /// <summary>
  149.         /// Получить текущее состояние сущности (для применения в функции GetDirtyPropertyUids)
  150.         /// </summary>
  151.         /// <returns></returns>
  152.         object GetCurrentState(T obj);
  153.  
  154.         /// <summary>
  155.         /// Найти все сущности
  156.         /// </summary>
  157.         /// <returns>Список всех сущностей</returns>
  158.         System.Collections.Generic.ICollection<T> FindAll();
  159.  
  160.         /// <summary>
  161.         /// Найти все сущности по идентификаторам из массива
  162.         /// </summary>
  163.         /// <param name="idArray">Массив идентификаторов</param>
  164.         /// <returns>Список сущностей</returns>
  165.         System.Collections.Generic.ICollection<T> FindByIdArray(object[] idArray);
  166.  
  167.         /// <summary>
  168.         /// Найти сущности в соответствии с параметрами выборки
  169.         /// </summary>
  170.         /// <param name="fetchOptions">Параметры выборки</param>
  171.         /// <returns>Список найденных сущностей</returns>
  172.         System.Collections.Generic.ICollection<T> Find(FetchOptions fetchOptions);
  173.  
  174.         /// <summary>
  175.         /// Найти сущности в соответствии с фильтром и параметрами выборки
  176.         /// </summary>
  177.         /// <param name="filter">Фильтр</param>
  178.         /// <param name="fetchOptions">Параметры выборки</param>
  179.         /// <returns>Список найденных сущностей</returns>
  180.         System.Collections.Generic.ICollection<T> Find(IEntityFilter filter, FetchOptions fetchOptions);
  181.  
  182.         /// <summary>
  183.         /// Поиск по условию в выражении
  184.         /// </summary>
  185.         /// <param name="condition">Условие поиска</param>
  186.         /// <returns>Список сущностей удовлетвояющих условию поиска</returns>
  187.         System.Collections.Generic.ICollection<T> Find(Expression<Func<T, bool>> condition);
  188.  
  189.         /// <summary>
  190.         /// Поиск по условию в выражении
  191.         /// </summary>
  192.         /// <param name="condition">Условие поиска</param>
  193.         /// <returns>Список сущностей удовлетвояющих условию поиска</returns>
  194.         System.Collections.Generic.ICollection<TResult> Find<TResult>(Expression<Func<TResult, bool>> condition);
  195.  
  196.         /// <summary>
  197.         /// Поиск по условию в выражении
  198.         /// </summary>
  199.         /// <param name="eqlFilter">Условие поиска на языке EQL</param>
  200.         /// <returns>Список сущностей удовлетвояющих условию поиска</returns>
  201.         System.Collections.Generic.ICollection<T> Find(string eqlFilter);
  202.     }
  203. }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement