我是新来的NH.
我在遗留数据库中有一个表,如下所示:
Id,
CompanyId,
Description,
[LOADS of other columns here]
Run Code Online (Sandbox Code Playgroud)
我想使用NHibernate返回一个DISTINCT数据集,只选择特定的列并使用WHERE语句.SQL看起来像这样:
SELECT DISTINCT
[table_name].CompanyId,
[table_name].Description
FROM
[table_name]
WHERE
[table_name].CompanyId = 2
Run Code Online (Sandbox Code Playgroud)
谷歌搜索了这个我想出来:
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));
Run Code Online (Sandbox Code Playgroud)
DTO的地方是:
public class CompanyDto
{
public int CompanyId { get; set; }
public string SomeName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
实体是:
public class Company
{
public virtual int Id { get; private set; }
public virtual int CompanyId { get; set; }
public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这不会带回消息记录.我知道通常我必须使用不同的变换(DistinctRootEntity),但我不能使用两个变换.如何将所有我想要的东西组合成一个电话?它必须是可能的,它的基本SQL ....
我需要:
有一个预测
var projections = Projections.Distinct(Projections.ProjectionList()
.Add(Projections.Property("CompanyId").As("CompanyId"))
.Add(Projections.Property("Name").As("SomeName"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5969 次 |
| 最近记录: |