我有以下Nhiberhate流利的映射,但我無法弄清楚如何獲得一個where子句中的一個連接。我只想加入OperationKind ==「TASK」的操作表。任何想法如何acheieve呢?沒有linq之外的映射。where條款在連接映射流利nhibernate
我想看起來像
SELECT X.PHASE_S , PA.INTERVAL, PA.BOR, OP.DESCRIPTION
FROM GG.PROJ_PHASE_X X
inner join GG.PHASE PA
on X.PHASE_S=PA.PHASE_S
inner join GG.OPERATIONS OP
ON X.PHASE_S = OP.PHASE_S
WHERE OP.OPERATION_KIND = 'TASK';
映射SQL:
public class MySectionMap : ClassMap<MySectionEntity>
{
public MySectionMap()
{
Schema("GG");
Table("PROJ_PHASE_X");
Id(x => x.PhaseS, "PHASE_S").GeneratedBy.TriggerIdentity();
References(x => x.Project).Column("PROJECT_S").Cascade.None().Not.LazyLoad().Not.Nullable();
Join("PHASE", m =>
{
m.Schema("GG");
m.Fetch.Join();
m.KeyColumn("PHASE_S");
m.Map(t => t.Interval).Column("INTERVAL");
m.Map(t => t.BorS).Column("BOR_S");
});
Join("OPERATIONS", m => // ONLY JOIN WHERE OPERATION_KIND EQUALS TASK?
{
m.Schema("GG");
m.Fetch.Join();
m.KeyColumn("PHASE_S");
m.Map(t => t.Description).Column("DESCRIPTION");
m.Map(t => t.OperationType).Column("OPERATION_KIND");
});
}
}
我其實在做兩個對接和我試圖篩選。由於Operation_kind位於Operations表中,因此您的代碼將無法工作。 我曾考慮過一個視圖,但是在將數據保存回數據庫時會導致問題。 – randoms
'Where可以包含任意的SQL,所以它應該可以工作。你有沒有刪除你的連接?你應該把它留在那裏。 – NOtherDev
由於某種原因,where子句實際上被忽略,它不會在輸出sql中創建一個where。 – randoms