我在现有数据库中有只读 View ,我想用 FHN 获取它们。我尝试通过以下方式映射它:
public class HhstMap : ClassMap<Hhst>
{
public HhstMap()
{
Table("HHST");
ReadOnly();
Id();
Map(x => x.Hkz);
Map(x => x.Kapitel);
Map(x => x.Titel);
Map(x => x.Apl);
Map(x => x.Hhpz);
}
}
但我得到一个错误:
无法执行查询
[ 选择 this_.id 作为 id3_0_,this_.Hkz 作为 Hkz3_0_,this_.Kapitel 作为 Kapitel3_0_,this_.Titel 作为 Titel3_0_,this_.Apl 作为 Apl3_0_,this_.Hhpz 作为 Hhpz3_0_ FROM HHST this_]
这没关系,因为没有 ID 列,但是如何在没有 ID 的情况下使用 Fluent 进行映射?
最佳答案
您可以将记录检索为值对象(非托管实体)而不是实体。
"14.1.5. 返回非托管实体
可以申请 IResultTransformer
到 native sql 查询。允许它例如返回非托管实体。
sess.CreateSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
.SetResultTransformer(Transformers.AliasToBean(typeof(CatDTO)))
此查询指定:
SQL 查询字符串
结果转换器
上述查询将返回
CatDTO
的列表已实例化并注入(inject) NAME
的值和 BIRTHNAME
到其相应的属性或字段中。 "
关于nhibernate - 如何使用 Fluent Nhibernate 映射没有唯一标识列的 VIEW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3618186/