.net web api & Entity Framework 6 скомпоновать несколько таблиц?

Привет. Такая проблема: Делаю REST API в .net web api & Entity Framework 6, базовые выводы из 1 таблицы сделал, а как правильно скомпоновать эти таблицы, не по ключевому полю ID не могу понять.

1 модель/таблица - пользователи
У пользователя могут быть подпользователи т.е каждый пользователь имеет параметр parent_id помимо своего id.

2 модель/таблица - автомобили
Тут есть поле user_id, т.е авто может быть закрепленно только за 1 юзером.

Задача такая: Нужно зная свой user_id, найти всех своих подпользователей и их авто.
Т.е что-то типа: Возьми из таблицы юзеров, пользователей у которых parent_id == моему id и добавь автомобили с таблицы авто, если id (пользователя) == user_id (из таблицы авто).

Т.е на выходе должен получится массив объектов юзеров, внутри которых массив из объектов автомобилей. (Т.к к 1 человеку может быть привязано несколько авто).

Я так понял что нужно создать еще одну модель. Я создал такую:
public class UserCars
    {
        public int Id { get; set; }
        [Required]
        public int ParentId { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public string Surname { get; set; }

        public int UserId { get; set; }
        public Car Car { get; set; }
    }


И соответственно контроллер, у меня получился такой:
// GET: api/CarChildrens/5
        [ResponseType(typeof(UserCars))]
        public async Task<IHttpActionResult> GetUserCars(int id)
        {
            var usersCar = await db.UserCars.Where(x => x.ParentId == id).Include( x => x.Car.UserId == x.UserId).ToListAsync();
            if (usersCar == null)
            {
                return NotFound();
            }

            return Ok(usersCar);
        }


Но приходит пустой массив. Как можно продебажить запрос к бд и в чем ошибка? Спасибо.
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
1) Прочитайте полностью https://metanit.com/sharp/entityframework/
2) Используйте Fluent API.
3) Используйте навигационные свойства.
4) Что бы посмотреть SQL Запрос сгенерированный EF 6 нужно указать настройку для этого, и запросы будут писаться в окно вывода. https://msdn.microsoft.com/en-us/library/dn469464(...

Далее Вам по возможности нужно прочитать все на том же metanit информацию про MVC 5, API 2.0.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы