Joh*_*est 9 nhibernate one-to-many nhibernate-mapping
我正在使用遗留数据库,我有以下表格:
Person ExternalFile
------ ------------
Id (int, PK) Key (string)
ConnectionId (int) Type (int)
Name (string) ConnectionId (int)
Firstname (string) Path (string)
Id (int, PK)
Run Code Online (Sandbox Code Playgroud)
个人有很多外部文件.
给出的例子:
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
Run Code Online (Sandbox Code Playgroud)
我可以映射这个,以便用户有一袋ExternalFiles吗?
我的映射文件
ExternalFile:
<?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>
Run Code Online (Sandbox Code Playgroud)
人:
<?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>
Run Code Online (Sandbox Code Playgroud)
我的查询看起来像这样:
SELECT *
FROM tbl_externalfiles
WHERE KeyValue = @p0
AND CDKey = @p1
AND DocType = @p2
@p0 = 29, @p1 = 'WN', @p2 = 4
Run Code Online (Sandbox Code Playgroud)
所以我必须从包到外部文件的包中提供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>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在那里获得Type和Key参数.
谢谢
小智 13
试试这个
<bag name="Files" lazy="false" where="DocType = '4' AND CDKey = 'WN'">
<key column="KeyValue" property-ref="ConnectionId" />
<one-to-many class="ExternalFile" />
</bag>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5479 次 |
| 最近记录: |