gpt4 book ai didi

NHibernate在主键上一对多映射

转载 作者:行者123 更新时间:2023-12-03 09:31:55 24 4
gpt4 key购买 nike

我正在使用旧版数据库,并且有以下表格:

Person                  ExternalFile
------ ------------
Id (int, PK) Key (string)
ConnectionId (int) Type (int)
Name (string) ConnectionId (int)
Firstname (string) Path (string)
Id (int, PK)

一个人有许多外部文件。

给出的例子:
Person A                ExternalFile1          ExternalFile2
-------- ------------- -------------
Id: 1 Key: 'WN' Key: 'WN'
ConnectionId: 29 Type: 4 Type: 4
Name: 'Foo' ConnectionId: 29 ConnectionId: 29
Firstname: 'Bar' Path: 'C:/file1.txt' Path: 'D:/file2.txt'
Id: 1 Id: 2

我可以对此进行映射,以便用户拥有一袋ExternalFiles吗?

我的映射文件

外部文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Not.Relative" assembly="Not">
<class name="ExternalFile" table="tbl_externalfiles" lazy="false">
<id name="Id" column="`Id`">
<generator class="identity" />
</id>
<property name="Key" column="`CDKey`" />
<property name="ConnectionId" column="`KeyValue`" />
<property name="Type" column="`DocType`" />
<property name="Path" column="`Path`" />
</class>
</hibernate-mapping>

人:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Not.Relative" assembly="Not">
<class name="Person" table="tbl_person" lazy="false">
<id name="Id" column="`Id`">
<generator class="identity" />
</id>
<property name="ConnectionId" column="`pairid`" />
<property name="Name" column="`name`" />
<property name="Firstname" column="`firstname`" />
</class>
</hibernate-mapping>

我的查询如下所示:
SELECT * 
FROM tbl_externalfiles
WHERE KeyValue = @p0
AND CDKey = @p1
AND DocType = @p2

@p0 = 29, @p1 = 'WN', @p2 = 4

所以我必须给包中的3个参数(从人员到外部文件),

1:该人的ConnectionID

2:“WN” <-始终相同(键)

3:4 <-始终相同(类型)

在多对一的情况下,当我映射到组合ID时可以使用,但是在这种情况下我不能使用它。

在这里甚至可以提包吗?我应该只使用一个额外的查询来获取我的ExternalFiles,还是使用一个条件进行查询。

编辑:

我知道我只能对connectionId执行以下操作
<bag name="Files" lazy="false">
<key column="KeyValue" property-ref="ConnectionId"/>
<one-to-many class="ExternalFile" />
</bag>

但是我也不知道如何在其中获取Type和Key参数。

谢谢

最佳答案

试试这个

   <bag name="Files" lazy="false" where="DocType = '4' AND CDKey = 'WN'">
<key column="KeyValue" property-ref="ConnectionId" />
<one-to-many class="ExternalFile" />
</bag>

关于NHibernate在主键上一对多映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12314191/

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