gpt4 book ai didi

c# - NHibernate 将多个表映射到一个类

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:57 27 4
gpt4 key购买 nike

在我的遗留数据库中,我有这样的情况:

TableA (id_A[PK], cod_A)
TableB (id_B[PK], cod_B, id_A[FK])
TableC (id_C[PK], cod_C, id_B[FK])

出于多种原因,我需要将这些表映射到一个类中(本例中为 Foo)

public class Foo
{
public virtual string IdA { get; set; }
public virtual string CodA { get; set; }

public virtual string IdB { get; set; }
public virtual string CodB { get; set; }

public virtual string IdC { get; set; }
public virtual string CodC { get; set; }
}

通过下面的映射,我可以连接 Table1 和 Table2 但不能连接 Table3

<class name="Foo" table="TableA">

<id name="IdA" column="id_A"/>
<property name="CodA" column="cod_A"/>

<join table="TableB">
<key column="id_A"/>
<property name="IdB" column="id_B"/>
<property name="CodB" column="cod_B"/>
</join>

<!--Here my problem because off course the join will be on TableA instead on TableB-->
<join table="TableC">
<key column="id_B"/>
<property name="IdC" column="id_C"/>
<property name="CodC" column="cod_C"/>
</join>

</class>

如何映射 Table3?

提前致谢。

最佳答案

NHibernate 不鼓励您尽可能多地使用 join。但有时没有办法解决。

如果可以的话,解决它的第一个也是最简单的方法是创建一个 View 并将您的类映射到该 View 。

第二种方法是为每个其他表创建一个对象并以正确的方式连接它们,可能是 - <one-to-one>映射。

第三种方式

* 警告 - 风险自负 *

下载 NH 源代码 - https://github.com/Nicaog/nhibernate-core/downloads .

下载以下错误补丁修复说明 - https://nhibernate.jira.com/browse/NH-1681

更改代码,编译 DLL 并将其添加到您的解决方案中。

说明 - 补丁实际上使用 property-ref 修复对于 <join>映射。 而且还使用多重连接 property-ref .

关于c# - NHibernate 将多个表映射到一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19863668/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com