मैं निम्नलिखित दो तालिकाओं है:NHibernate - वाम मिलती
नौकरियां AreaID, JobNo (समग्र कुंजी)
लॉग्स LogID, AreaID, JobNo
मैं सभी नौकरियों प्राप्त करने की आवश्यकता जिनके पास उनके साथ जुड़े कोई लॉग नहीं हैं। एसक्यूएल में मैं कर सकता था:
SELECT Jobs.AreaID,
Jobs.JobNo
FROM Jobs
LEFT JOIN Logs
ON Jobs.AreaID = Logs.AreaID
AND Jobs.JobNo = Logs.JobNo
WHERE Logs.LogID is null
लेकिन मुझे यकीन नहीं है कि इसे एनएचबीर्नेट के साथ कैसे पूरा किया जाए। क्या कोई भी पॉइंटर्स पेश कर सकता है?
यहाँ मेरी मैपिंग हैं:
<class name="Job" table="Jobs">
<composite-key name="Id">
<key-property name="JobNo"/>
<key-many-to-one name="Area" class="Area" column="AreaID"/>
</composite-key>
</class>
<class name="Log" table="Logs">
<id name="Id" column="LogID">
<generator class="identity"/>
</id>
<property name="JobNo"/>
<many-to-one name="Area" class="Area" column="AreaID"/>
</class>
धन्यवाद
अद्यतन
ठीक है, मैं Nosila का जवाब थोड़ा संशोधित, और यह अब क्या कर रहा है कि मैं क्या चाहता था:
Log logs = null;
return session.QueryOver<Job>()
.Left.JoinAlias(x => x.Logs,() => logs)
.Where(x => logs.Id == null)
.List<Job>();
मुझे इसे अपने नौकरी में भी जोड़ना पड़ा मानचित्रण:
<bag name="Logs">
<key>
<column name="JobNo"></column>
<column name="DivisionID"></column>
</key>
<one-to-many class="Log"/>
</bag>
सहायता के लिए धन्यवाद। :)
क्या आप अब अपनी क्वेरी पोस्ट कर सकते हैं? – Nosila
उपर्युक्त SQL क्वेरी वर्तमान में मैं उपयोग कर रहा हूं। मैं इस समय एनएच सीख रहा हूं और इसका उपयोग करने के लिए एक छोटे से एप्लिकेशन को बदलने की कोशिश कर रहा हूं। – Tom
क्या आपके मैपिंग्स हैं? साथ ही, अगर कोई गलत है तो कोई मुझे सही करता है लेकिन मुझे लगता है कि आपको शामिल होने के लिए शर्तों को जोड़ने के लिए आपको एनएचबीरनेट 3.2 की आवश्यकता है ('क्वेरीओवर' एपीआई का उपयोग करके, वैसे भी)। – Nosila