public virtual ExcludeData GetExcludeData(uint excludeId)
        {
            return(Slave(s => {
                var exclude = s.Load <Exclude>(excludeId);
                var equivalients = s.CreateSQLQuery(@"
select e.ProducerId as Id, concat(e.Name, ' [', p.Name, ' ]') as Name
from Catalogs.ProducerEquivalents e
join Catalogs.Assortment a on a.ProducerId = e.ProducerId
join Catalogs.Producers p on p.Id = a.ProducerId
where a.Checked = 1 and a.CatalogId = :catalogId")
                                   .SetParameter("catalogId", exclude.CatalogProduct.Id)
                                   .SetResultTransformer(new AliasToPropertyTransformer(typeof(ProducerOrEquivalentDto)))
                                   .List <ProducerOrEquivalentDto>();
                var assortment = Assortment.Search(s, 0, new Query("CatalogId", exclude.CatalogProduct.Id)).Content.Where(a => a.Checked).ToList();
                var producers = equivalients
                                .Concat(assortment.Select(a => new ProducerOrEquivalentDto {
                    Id = a.ProducerId, Name = a.Producer
                }))
                                .OrderBy(p => p.Name).ToList();
                return new ExcludeData {
                    Producers = producers,
                    Synonyms = ProducerSynonym.Load(s, new Query("Name", exclude.ProducerSynonym)),
                };
            }));
        }
 public virtual IList <ProducerSynonymDto> GetSynonyms(uint producerId)
 {
     return(Slave(session => ProducerSynonym.Load(session, new Query("ProducerId", producerId))));
 }