我正在尝试将此 sql 语句转换为流畅的 nhibernate 映射:
select *
from Project p
inner join ProjectData pd on p.Project = pd.Project
inner join ProjectCompany pc on p.Project = pc.Project and pc.InitComp = 'Yes' and pc.Company = pd.LogComp
inner join ProjectCustomer cust on cust.id = pd.custid
将此语句放入单个实体中时遇到了许多问题(所有连接都是一对一的关系)。
我知道一个视图可以解决我的问题,但可惜我没有创建一个视图的权限。
目前我的代码看起来像这样
Table("Project");
Id(p=> p.Number);
Join("ProjectData", j =>
{
j.Fetch.Join();
j.KeyColumn("Project");
j.Map(pd => pd.Customer);
});
Map(p => p.Complexity);
我面临的问题是:
- 如何创建硬编码过滤器(pc.InitComp = 'Yes')
- 我如何加入 2 个语句(p.project = pc.Project 和 pc.Company = pd.LogComp
- 我如何从连接表而不是基础表加入?(ProjectCustomer 加入 ProjectData)
对于 sql 中如此微不足道的事情有很多问题,但我似乎无法在互联网上找到一个简单的答案,然后创建一个视图。