Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak wysłać zapytanie od wielu do wielu o brak rekordów przy użyciu EF5?

Możesz użyć EF do tworzenia zasadniczo tych samych zapytań opublikowanych w pytaniu. Zacząłem od stworzenia modelu poco EmployeePrivilege z właściwościami:int PrivilegeID i int EmployeeID. Nie dodałem tego do 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;

Właśnie zdałem sobie sprawę, że możesz uzyskać ten sam wynik bez tworzenia poco EmployeePrivilege w następujący sposób:

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;

Obie te kwerendy EF zwracają pracowników, którzy nie mają określonych uprawnień względem zarówno SQL Server, jak i Oracle (przy użyciu dotConnect firmy Devart dla Oracle).

Wiele postów, które przeczytałem, odnosiło się do użycia DefaultIfEmpty() aby uzyskać lewe sprzężenie zewnętrzne. Powyższe zapytania działają, jednak proszę opublikuj, jeśli istnieje lepszy sposób na uzyskanie tego wyniku za pomocą DefaultIfEmpty() .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rejestrowanie procedury składowanej Oracle Java za pomocą interfejsu API rejestrowania Java (java.util.logging )

  2. Jak mieć klucz podstawowy z wartościami null przy użyciu pustego ciągu?

  3. Wywołaj funkcję Oracle z Javy

  4. Połącz węzły XMLType w zapytaniu Oracle

  5. jak połączyć więcej niż dwie kolumny w deweloperze plsql?