到目前为止(使用 NHibernate)我已经使用了实体映射,并没有真正参与创建原始 sql 查询 - 但有些事情出现在我需要这样做的地方。
我遇到的问题是我想自动将查询的列别名映射到 Dto 对象。
这可行,但我必须按查询顺序指定列别名'。
SQL
string sql = "select mycol1 as ColumnOne from mytable";
NHibernate 查询
var query = session.CreateSQLQuery(sql)
.AddScalar("ColumnOne", NHibernateUtil.Int32)
.SetResultTransformer(
NHibernate.Transform.Transformers.AliasToBean<MyDtoObject>()
);
MyDtoObject
public class MyDtoObject
{
public int ColumnOne {get;set;}
}
但是有没有办法让 NHibernate 在不创建映射类的情况下自动执行查询中的列和 Dto 之间的映射?
我已经看到了一些在查询中使用别名的例子,例如
string sql = "select mycol1 as {ColumnOne} as ColumnOne from mytable"; /// ???
但不能让它工作,因为别名 {ColumnOne} 在作为 sql 语句发送到数据库之前似乎没有被替换。
任何想法?
TIA
山姆