NHibernate - запрашивать определенные столбцы и возвращать отдельные записи?

Я новичок в NH.

У меня есть таблица в устаревшей БД, которая выглядит следующим образом:

Id,
CompanyId,
Description,
[LOADS of other columns here]

Я хотел бы вернуть набор данных DISTINCT с помощью NHibernate, выбрав только определенные столбцы и используя оператор WHERE. SQL будет выглядеть примерно так:

SELECT DISTINCT
     [table_name].CompanyId, 
     [table_name].Description 
FROM 
     [table_name]
WHERE
     [table_name].CompanyId = 2

Погуглив, я пришел к следующему:

ProjectionList projections = Projections.ProjectionList();
projections.Add(Projections.Property("CompanyId"), "CompanyId");
projections.Add(Projections.Property("Name"), "SomeName");


var companyDto = session.QueryOver<Company>()
    .Where(x => x.CompanyId == 2)
    .Select(projections)
    .TransformUsing(Transformers.AliasToBean<CompanyDto>())
    .List<CompanyDto>();

if (companyDto != null)
   Console.WriteLine(string.Format("{0}, {1}", companyDto.CompanyId, companyDto.SomeName));

Где находится DTO:

public class CompanyDto
{
  public int CompanyId { get; set; }
  public string SomeName { get; set; }
}

И сущность:

public class Company
{
    public virtual int Id { get; private set; }
    public virtual int CompanyId { get; set; }
    public virtual string Name { get; set; }
}

Это не возвращает дезинфицирующие записи. Я знаю, что обычно мне пришлось бы использовать другое преобразование (DistinctRootEntity), но я не могу использовать два преобразования. Как я могу объединить все, что я хочу, в один звонок? Это должно быть возможно, его базовый SQL ....

Мне нужно:

  1. не использовать HQL
  2. не возвращать все столбцы для записи
  3. не возвращать повторяющиеся строки
6
задан Diego Mijelshon 14 December 2011 в 12:18
поделиться