Я новичок в 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 ....
Мне нужно: