У меня есть ассоциация таблиц, например (CaseClient - таблица моста):
- В Cases много клиентов CaseClient.
- У клиента много клиентов CaseClient
- ClientType имеет много CaseClient
Самый простой способ - просто использовать представление в базе данных, но я слышал, что с помощью linq вы можете как-то присоединиться к этому? Или я должен просто создать представление в базе данных и linq запросить это представление?
я ценю ваш комментарий
Ответ 1 · Ray Hayes
Я думаю, вы хотите использовать метод Join из вашей таблицы соединений и разрешать каждое из ваших отношений. Например.
// Where CaseId and TypeId are your members of CaseClient
var x = caseClients.Join( cases, cc => cc.CaseId, c => c.Id)
.Join( types, cc => cc.TypeId, t => t.Id)
.Select();
Приведенный выше код непроверен (пока) и из памяти. Возможно, вам придется поместить Select между двумя соединениями.
Ответ 2 · Community
Вот адаптация того, что я сделал для очень похожей ситуации. Только имена были изменены, чтобы защитить невиновных.
IEnumerable<Case> getCaseByClient(int client_id)
{
var ret = from c in Cases
join cc in CasesClients
on c.Id equals cc.ClientId
join cl in Clients
on cc.ClientId equals client_id
select c;
return ret;
}
конечно, это предполагает, что ваше поле client_id имеет тип int, но его достаточно легко изменить.