| 
 | 
| 
 
EF Core 5 Multiple relations 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Добрый день. Есть MSSQL БД под системой Navision (она ей рулит). Физических FK в БД нет, они все на уровне приложения Navision. Есть такая структура таблиц (Из коробки от самого Microsoft): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. В поле [Document No_] таблицы [Company$Item Ledger Entry] могут лежать значения [No_] как из [Company$Purch_ Rcpt_ Header], так и из [Company$Sales Shipment Header] (Всего 15 таблиц). Поле [Document Type] по сути обозначает какой номер документа из какой таблицы там лежит. Поэтому справедлив запрос.. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Есть ли возможность используя навигации воссоздать такой запрос через Include/ThenInclude. Хотя бы для одного LEFT JOIN. Воссоздать LEFT JOIN у меня получилось (при этом логически гарантируется, что номера документов уникальные в системе (но это всего лишь настройки)), а вот чтобы автоматически да и даже в запросе дополнительно указать Document Type для левого соединения не получается Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Суть, чтобы была возможность использовать трекинг объектов, и при этом иметь условные связи. Что-то вроде этого: Код: c# 1. Или по другому нужен условный Include/ThenInclude но не на коллекцию, а на объект Как это сделать через SelectMany подставляя DBSet<> понятно (и то, там генерируется OUTER APPLY вместо LEFT JOIN, но на результат это не влияет), но на выходе будет совсем не исходный DBSet<> ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 30.08.2021, 18:05 | 
  
  
  
   | 
||
| 
 
EF Core 5 Multiple relations 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Если через навигационные свойства не получается сделать запрос, можно попробовать описать джойны напрямую. Благо EF это позволяет.  Complex Query Operators ,  Perform custom join operations . Вообще, EF (Core) весьма убог в плане составления сложных запросов. Вот здесь: EF Core Tools & Extensions - можно поискать дополнения, которые добавят ему мощи. Судя по описанию, ELinq позволяет писать запросы как в SQL. Но с этой либой я никогда не работал, поэтому ничего по ней не скажу. Зато могу посоветовать linq2db.EntityFrameworkCore . Примеры разных джойнов: Joins . Если последние примеры заинтересуют, то я бы посоветовал выкинуть EF и взять ORM linq2db. Но почему-то такое предложение всегда вызывает отторжение... Странно: никто не возражает против подключения дополнительных библиотек, например, для парсинга форматов наподобие json, yaml, csv, для графических компонентов, для всяких REST и SOAP-клиентов, а вот как предложишь доп либу для ORM - сразу паника. Из моего личного опыта... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 02.09.2021, 18:51 | 
  
  
  
   | 
||
| 
 | 

start [/forum/search_topic.php?author=prokhorov&author_mode=last_posts&do_search=1]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    15ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    15ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    61ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    44ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 441ms | 
| total: | 616ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...