J'ai le mappage fluent Nhiberhate suivant, mais je ne peux pas comprendre comment obtenir une clause where dans l'une des jointures. Je veux seulement rejoindre la table des opérations où OperationKind == "TASK". Une idée sur la façon de parvenir à cela? Sans linq en dehors de la cartographie.where clause dans le mappage de jointure fluent nhibernate
La sql je veux ressemblerait à quelque chose comme
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';
Cartographie:
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");
});
}
}
je suis en train de faire à la fois rejoindre et j'essayer de filtrer. Puisque Operation_kind est dans la table des opérations, votre code ne fonctionnera pas. J'ai pensé à une vue, mais cela entraîne des problèmes lors de la sauvegarde des données dans la base de données. – randoms
'Où' peut contenir du SQL arbitraire, donc cela devrait fonctionner. Avez-vous supprimé vos jointures? Vous devriez le laisser là. – NOtherDev
La clause where est ignorée pour une raison quelconque, elle ne crée pas d'où dans la sortie sql. – randoms