1
我試圖把這個SQL語句轉換成一個功能NHibernate映射:
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 = '是')
- 我如何加入2條語句(p.project = pc.Project和pc.Company = pd.LogComp
- 我該如何從連接表而不是基礎連接?(ProjectCustome r加入ProjectData)
很多的問題,在sql中的東西很平凡,但我似乎無法在互聯網上找到一個簡單的答案,然後創建一個視圖。
nhibernate不支持連接映射中的過濾器。一種解決方案是使用對類ProjectData的私有引用,並在客戶的getter/setter中實現邏輯 – Firo 2012-04-26 10:42:03
這是一個無賴,我想這樣做的主要原因是創建一個快速查詢,以便與自定義getter/setter一起工作沒有給我需要的好處。謝謝你指出這一點,但我猜我必須請求dba讓我創建一個視圖。 – Kristof 2012-04-26 11:16:29
a''幾乎與'' –
Firo
2012-04-26 12:33:16