我正在嘗試使用非主字段與2個表進行一對一加入。 我在數據庫中有2個表格。NHibernate加入非主鍵字段表
CREATE TABLE [dbo].[Branch](
[BranchID] [int] IDENTITY(1,1) NOT NULL,
[Branch_Name] [nvarchar](100) NULL)
CREATE TABLE [dbo].[Salesman](
[SalesmanID] [int] IDENTITY(1,1) NOT NULL,
[BranchID] [int] NOT NULL,
[First_Name] [nvarchar](30) NULL,
[Last_Name] [nvarchar](30) NULL)
我基本上需要分支名稱,只要我從推銷員表中檢索一行。 我想我可以在Salesman.hbm.xml文件中添加一個連接。
<join table="dbo.Branch">
<key column="BranchID" />
<property lazy="true" update="false" insert="false" not-null="false" type="String" name="Branch_Name" />
</join>
這不起作用,因爲nHibernate總是使用主鍵創建連接。我讀了一些其他的帖子,他們建議使用這種情況下的視圖。因此,我創建像這樣一個觀點:
create view dbo.VIEW_Salesman As
SELECT a.[SalesmanID], a.[BranchID], a.[First_Name],a.[Last_Name],
(select [Branch_Name] FROM [dbo].[Branch] WHERE BranchID= a.[BranchID]) As Branch_Name
FROM [dbo].[Salesman] as a
上述觀點的實際工作,但那裏當你想加入使用非主域2代表一個更好的解決方案?
在此先感謝您的任何建議和意見, 祝您有美好的一天!
關係分支是否有許多推銷員和推銷員參考(分支爲您工作?推銷員實體可以直接引用分支對象 –
WorldIsRound
2011-03-29 20:18:59
@WorldIsRound :+1好主意!在我的答案中,我甚至沒有想過它!=) – 2011-03-29 20:24:52
嗨WorldlsRound可以詳細說明您的<多對一名稱=「Branch」/>解決方案。我是否將標記放在銷售員映射文件中,並將放在分支映射文件中?我不明白這是否會讓nhiberate知道匹配BranchID。 –
Victor
2011-03-30 15:06:39