प्रश्न में पोस्ट किए गए मूल रूप से वही प्रश्न बनाने के लिए आप ईएफ का उपयोग कर सकते हैं। मैंने गुणों के साथ एक पोको मॉडल कर्मचारी विशेषाधिकार बनाकर शुरू किया:int प्रिविलेजिड और इंट कर्मचारी आईडी। मैंने इसे DbContext में नहीं जोड़ा।
var EmpPrivQuery = ctx.Privileges
.Where(p => p.PrivilegeName == "P3")
.SelectMany(p => p.Employees, (p, e) => new EmployeePrivilege{EmployeeID = e.EmployeeID, PrivilegeID = p.PrivilegeID}
.Distinct();
var employeesMissingPrivilege = from e in Employees
join epq in EmpPrivQuery
on e.EmployeeID equals epq.EmployeeID
into jointable
where jointable.Count()==0
select e;
मैंने अभी महसूस किया है कि आप पोको एम्प्लॉई प्रिविलेज बनाए बिना भी वही परिणाम प्राप्त कर सकते हैं:
var EmpPrivQuery = ctx.Privileges
.Where(p => p.PrivilegeName == "P3")
.SelectMany(p => p.Employees.Select(e => e.EmployeeID)
.Distinct();
var employeesMissingPrivilege = from e in Employees
join epq in EmpPrivQuery
on e.EmployeeID equals epq
into jointable
where jointable.Count()==0
select e;
ये दोनों EF क्वेरी कर्मचारियों को Sql सर्वर और Oracle (Oracle के लिए Devart's dotConnect का उपयोग करके) के खिलाफ निर्दिष्ट विशेषाधिकारों को याद करती हैं।
मेरे द्वारा पढ़ी गई कई पोस्ट DefaultIfEmpty()
. का उपयोग करने के लिए संदर्भित हैं बाएं बाहरी जुड़ाव प्राप्त करने के लिए। हालांकि, ऊपर दिए गए प्रश्न काम करते हैं, कृपया पोस्ट करें कि क्या इस परिणाम के लिए DefaultIfEmpty()
का उपयोग करने का कोई बेहतर तरीका है। .