sql >> Database teknologi >  >> RDS >> Oracle

hvordan man forespørger fra mange til mange for fravær af poster ved hjælp af EF5

Du kan bruge EF til at oprette stort set de samme forespørgsler, der er skrevet i spørgsmålet. Jeg startede med at lave en poco-model EmployeePrivilege med egenskaber:int PrivilegeID &int EmployeeID. Jeg føjede ikke dette til 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;

Jeg har lige indset, at du også kan få det samme resultat uden at oprette Poco EmployeePrivilege som følger:

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;

Begge disse EF-forespørgsler returnerer medarbejdere, der mangler specificerede privilegier mod både SQL Server og Oracle (ved hjælp af Devarts dotConnect for Oracle).

Mange indlæg, som jeg læste, refererede til ved hjælp af DefaultIfEmpty() for at opnå en venstre ydre sammenføjning. Forespørgslerne ovenfor virker, men skriv venligst, hvis der er en bedre måde til dette resultat ved hjælp af DefaultIfEmpty() .




  1. pg_dump uden kommentarer til objekter?

  2. Postgres:få min og max rækker tæller i mange til mange relationstabeller

  3. Er dette en sikker måde at konvertere MySQL-tabeller fra latin1 til utf-8?

  4. PSQLEundtagelse:Store objekter må ikke bruges i auto-commit-tilstand