我正在尝试使用非主字段与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