nhibernate - 如何使用 Fluent Nhibernate 映射没有唯一标识列的 VIEW

标签 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 进行映射?

最佳答案

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

"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/

相关文章:

mysql blob 与 mvc 和 nhibernate

nhibernate - 使用 NHibernate LINQ 提供程序连接查询的唯一结果

c# - 单元测试和休眠?

NHibernate "Errors in named queries"

NHibernate 自定义集合类型

c# - NHibernate 映射索引超出范围

nhibernate Iesi ISet 无法删除 ()

c# - 如何在 Fluent NHibernate 中映射 IDictionary<string, Entity>

nhibernate - Fluent NHibernate 映射到没有暴露属性的私有(private)/ protected 字段

java - 我在尝试直接通过 URL 从表中获取数据时收到 SQLGrammarException