Я новичок в 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 ....
Мне нужно:
- не использовать HQL
- не вернуть все столбцы для записи
- не возвращать повторяющиеся строки