【发布时间】:2015-12-10 09:59:50
【问题描述】:
我有以下 SQL 代码:
SELECT err.*,tmp.counted FROM sm_database.error err
LEFT JOIN (
SELECT sme_Hash, COUNT(*) as counted FROM sm_database.error GROUP BY sme_Hash
) tmp
ON tmp.sme_Hash = err.sme_Hash
WHERE sme_Id = 197
上面会给我一个额外的计数列,应该设置到下面的我的 Count 属性中。
id 197 将是我将在方法中使用的参数。
我的班级名称是:
public class Error {
public virtual int Count { get; set; }
public virtual DateTime Date { get; set; }
public virtual int Id { get; set; }
public virtual string Hash { get; set; }
-----------------
//more property's
}
我想用 Query(或 QueryOver)将它“转换”成 NHibernate
有人知道如何正确执行此操作,或者可以为我指明正确的方向吗?
编辑
我得到了以下内容:
string query = @"SELECT err.* ,tmp.Count
FROM sm_database.error err
LEFT JOIN (
SELECT sme_Hash as Hash, COUNT(*) as Count FROM sm_database.error GROUP BY sme_Hash
) tmp
ON tmp.Hash = err.sme_Hash
WHERE sme_Id = :id";
var result = session.CreateSQLQuery(query)
.AddEntity(typeof(Error))
.SetParameter("id", id).List<Error>().SingleOrDefault();
它工作正常,除了 Count 属性之外的所有内容都被拉出。
我的错误类中的 Count 属性未映射,因为我们在数据库中没有列,因为我们在查询中计算了计数。
有没有办法在我的 Error.Count 属性中获取 tmp.Count 值?
提前致谢。
【问题讨论】:
标签: c# mysql sql hibernate nhibernate