【问题标题】:Fluent nHibernate Join is doing insert into joined tableFluent nHibernate Join 正在插入连接表
【发布时间】:2023-03-03 10:37:01
【问题描述】:

我正在尝试使用 join 从另一个表中提取单个属性,该表没有映射。我的问题是,当我创建映射实体的新实例并保存它时,我收到关于尝试插入未映射表的错误(它试图将 null 插入非 null 列)。我认为使用 .ReadOnly() 会阻止 nhibernate 尝试插入我的未映射表,但这似乎不起作用。

我的映射如下所示:

        // Join _UnMapped table with Mapped table to get the property
        Join("_UnMapped", x =>
            {
                x.Fetch.Join();
                x.KeyColumn("UnMappedFK");
                x.Map(y => y.Property, "Property")
                    .Not.Nullable()
                    .ReadOnly();
            });

我曾考虑创建一个视图并映射到该视图以获取此属性,但如果可以的话,我宁愿通过映射来实现。任何帮助(或关于 join 应该如何工作的解释)将不胜感激!

【问题讨论】:

    标签: c# nhibernate join fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    使用x.Inverse();。

    Here 是一些关于加入的文档。

    【讨论】:

    • 事实证明,在解决了我遇到的其他一些问题后,设置逆向工作。我不完全明白为什么。我认为这只是一个告诉 nhibernate 关系中哪个实体拥有 FK 的标志。在这种情况下,我的映射表是具有 FK 的表(即 inverse = false 对吗?)。您的链接对我不起作用,所以很遗憾这对我没有帮助。
    • @Ben 不知道为什么这个链接不适合你,它对我来说很好。但是“逆”在这里只是一个不好的命名。来自文档:inverse(可选 - 默认为 false):如果启用,Hibernate 将不会尝试插入或更新此连接定义的属性。
    猜你喜欢
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多