如何在没有Fluent Nhibernate的唯一标识列的情况下映射VIEW

时间:2010-09-01 12:55:00

标签: nhibernate fluent-nhibernate nhibernate-mapping

我在现有数据库中只有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进行映射?

2 个答案:

答案 0 :(得分:7)

您可以将记录检索为值对象(非托管实体)而不是实体。

“14.1.5。返回非管理实体 可以将IResultTransformer应用于本机sql查询。允许它例如返回非托管实体。

sess.CreateSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
    .SetResultTransformer(Transformers.AliasToBean(typeof(CatDTO)))

此查询指定:       SQL查询字符串       结果转换器

上述查询将返回已CatDTO的列表,该列表已经过实例化,并将NAMEBIRTHNAME的值注入其相应的属性或字段中。 “

答案 1 :(得分:1)

也许这可以帮到你:Fluent nHibernate no identity column in table…

编辑: 另外,你可以使用composite id,或者你需要Fluent Nhibernate的latest version