我在现有数据库中只有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进行映射?
答案 0 :(得分:7)
您可以将记录检索为值对象(非托管实体)而不是实体。
“14.1.5。返回非管理实体
可以将IResultTransformer
应用于本机sql查询。允许它例如返回非托管实体。
sess.CreateSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
.SetResultTransformer(Transformers.AliasToBean(typeof(CatDTO)))
此查询指定: SQL查询字符串 结果转换器
上述查询将返回已CatDTO
的列表,该列表已经过实例化,并将NAME
和BIRTHNAME
的值注入其相应的属性或字段中。 “
答案 1 :(得分:1)
也许这可以帮到你:Fluent nHibernate no identity column in table…?
编辑: 另外,你可以使用composite id,或者你需要Fluent Nhibernate的latest version?