Руководство по Catharsis - часть 2: пример Catharsis - Объект доступа к данным (Dao)
ОГЛАВЛЕНИЕ
Страница 2 из 5
Теперь мы рассмотрим объект доступа к данным (Dao) - это тот объект, которые читает информацию из базы данных посредством NHibernate. Он используется в качестве части функциональности поиска для возврата всех кортежей базы данных, которые удовлетворяют определенный набор критериев. Он также обрабатывает кляузы сортировки (Order-By).
А вот часть кода из файла:
public override IList<Agent> GetBySearch(ISearch searchObject)
{
Check.Require(searchObject.Is(), “Use only AgentSearch not-null instance for searching Agent entities”);
var search = searchObject as AgentSearch;
if (search.Is())
{
Criteria.CreateEqual(Str.Common.ID, search.IDSearch);//Поиск идентификатора ID
Criteria.CreateLike(Str.Common.Code, search.Example.Code);
Criteria.CreateEqual(Str.Business.Agent.IsInternal, search.IsInternalSearch);
Criteria.CreateGe(Str.Business.Agent.Rating, search.RatingFrom);
Criteria.CreateGe(Str.Business.Agent.CommissionRate, search.CommissionRateFrom);
Criteria.CreateGe(Str.Business.Agent.CommissionPeak, search.CommissionPeakFrom);
Criteria.CreateGeDate(Str.Business.Agent.Started, search.StartedFrom);
Criteria.CreateGeDate(Str.Business.Agent.Finished, search.FinishedFrom);
Criteria.CreateLe(Str.Business.Agent.Rating, search.RatingTo);
Criteria.CreateLe(Str.Business.Agent.CommissionRate, search.CommissionRateTo);
Criteria.CreateLe(Str.Business.Agent.CommissionPeak, search.CommissionPeakTo);
Criteria.CreateLeDate(Str.Business.Agent.Started, search.StartedTo);
Criteria.CreateLeDate(Str.Business.Agent.Finished, search.FinishedTo);
Criteria.CreateEqual(Str.Controllers.Currency, search.Example.Currency);
Criteria.CreateEqual(Str.Controllers.Country, search.Example.Country);
}
return GetListByCriteria(searchObject);
}
Класс Str - это список констант, которые используются вместо строк для того, чтобы избежать ошибок и сделать код более обслуживаемым. Данные файлы можно найти в следующем месте:
А вот блок, демонстрирующий класс Agent:
public partial class Str
{
public partial class Business
{
#region Agent
public class Agent
{
protected Agent() { }
public const string IsInternal = "IsInternal";
public const string Rating = "Rating";
Метод GetBySearch в DAO вызывается используя SearchObject , как это можно заметить в подписи метода:
public override IList<Agent> GetBySearch(ISearch searchObject)
{
Check.Require(searchObject.Is(), “Use only AgentSearch not-null instance for searching Agent entities”);
var search = searchObject as AgentSearch;