sql >> Databasteknik >  >> RDS >> Oracle

hur man frågar många till många för avsaknad av poster med EF5

Du kan använda EF för att skapa i princip samma frågor som postats i frågan. Jag började med att skapa en poco-modell EmployeePrivilege med egenskaper:int PrivilegeID &int EmployeeID. Jag har inte lagt till detta i 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;

Jag insåg precis att du också kan få samma resultat utan att skapa Poco EmployeePrivilege enligt följande:

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;

Båda dessa EF-frågor returnerar Anställda som saknar specificerade privilegier mot både SQL Server och Oracle (med Devarts dotConnect för Oracle).

Många inlägg som jag läste hänvisade till med DefaultIfEmpty() för att uppnå en vänster yttre sammanfogning. Frågorna ovan fungerar, men vänligen posta om det finns ett bättre sätt att få det här resultatet med DefaultIfEmpty() .




  1. MySQL binär lagring med BLOB VS OS filsystem:stora filer, stora kvantiteter, stora problem

  2. Endast läsåtkomst till lagrat procedurinnehåll

  3. Hur bestämmer man primärnyckeln för en tabell i SQL Server?

  4. Hur får man ändringsnumret?