Задать вопрос

.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);
        }


Но приходит пустой массив. Как можно продебажить запрос к бд и в чем ошибка? Спасибо.
  • Вопрос задан
  • 202 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы