Я пытаюсь сделать однозначное объединение с 2 таблицами, используя неосновные поля.
У меня есть 2 таблицы в БД.
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 таблицы, используя неосновные поля?
Заранее спасибо за любые предложения и советы,
Хорошего дня!