Вопрос

У меня есть следующая схема:

Клиенты - ID клиентаПользователи - ID пользователяОфисы - идентификатор офиса

КлиентОфисы -Идентификатор клиента, идентификатор офисаПользовательские офисы - идентификатор пользователя, идентификатор офиса

Сущности, выделенные жирным шрифтом, — это сущности EntityFramework.

Теперь мне нужно написать функцию, которая принимает UserId и возвращает список клиентов, которые также принадлежат офисам, к которым принадлежит пользователь.

Например, Say ABC Inc.работает с лондонским офисом XYZ Inc.работает с офисом в Нью-Йорке.Пользователь «Yakoon» работает только для Лонд Офиса.

Оператор linq при выполнении должен возвращать только ABC Inc.Если «Yakoon» также принадлежит нью-йоркскому офису, то он должен вернуться к ABC и XYZ Inc.

Спасибо

Это было полезно?

Решение

Эквивалентный подход в рамках сущности будет выглядеть примерно так:

public IEnumerable<Client> GetClientsForUser(int id)
{
  return (from u in objectContext.Users
            where u.UserId == id
          from o in u.Offices
          from c in o.Clients
          select c);

}

Убедитесь, что у вас есть первичные ключи в таблицах UserOffices и ClientOffices, чтобы EF распознавал их как соединительные таблицы.

Другие советы

Как насчет этого:

public IEnumerable<Client> GetClientsForUser(int id)
{
  return (from u in userOffices 
    where u.UserId == id
    join o in clientOffices on u.OfficeId equals o.OfficeId
    join c in clients on o.ClientId equals c.ClientId
    select c);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top