Как применить условное объединение в EF Core? - PullRequest
0 голосов
/ 16 января 2019

Допустим, у меня есть таблица Contacts, Customers и Suppliers. Контакты имеет столбец ContactTypeId и ExternalContactId. Таким образом, вы можете получить либо:

var extContacts = from ct in _context.Contacts
                  join cu in _context.Customers
                  on ct.ExternalContactId equals cu.Id

Или у меня это тоже может быть

var extContacts = from ct in _context.Contacts
                  join su in _context.Suppliers
                  on ct.ExternalContactId equals su.Id

Здесь я показал только 2 соединения, чтобы проиллюстрировать мою точку зрения. В моем случае у меня 5 таблиц.

Есть ли способ, я могу сделать только один звонок, присоединиться к таблице контактов в зависимости от ContactTypeId? В противном случае мне, возможно, придется сделать более 1 звонка (до 5).

Что-то вроде:

var extContacts = from ct in _context.Contacts
                  join (
                         //if type is Customer --> Join with Customers table
                         //if type is supplier --> join with Suppliers table
                       )
                  select name, phone, address //fields common to both tables

Спасибо за помощь

...