Oracle
 sql >> база данни >  >> RDS >> Oracle

как да направите заявка много към много за липса на записи с помощта на EF5

Можете да използвате EF, за да създадете основно същите заявки, публикувани във въпроса. Започнах със създаване на poco модел EmployeePrivilege със свойства:int PrivilegeID &int EmployeeID. Не съм добавил това към 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;

Току-що разбрах, че можете също да получите същия резултат, без да създавате poco EmployeePrivilege, както следва:

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 (използвайки dotConnect на Devart за Oracle).

Много публикации, които прочетох, се отнасят до използването на DefaultIfEmpty() за постигане на ляво външно съединение. Заявките по-горе работят, но моля, публикувайте, ако има по-добър начин за този резултат чрез 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. Защо Hibernate превключи да използва LONG над CLOB?

  2. Отворете модален диалогов прозорец чрез JavaScript Oracle APEX

  3. Привилегиите върху основната таблица автоматично ли се предават на всички изгледи, създадени на таблицата?

  4. Oracle SQL Developer:Показване на резултатите на REFCURSOR в Grid?

  5. Странно поведение на команда LENGTH - ORACLE