moClay
@moClay
учусь всему

Как вывести список сотрудников привязанных к животным?

У меня есть 2 модели - животные и сотрудники. Я хочу их связать между собой и вывести несколько сотрудников которые привязаны к одному животному и я не знаю как это сделать. Через модели, контролеры или представления?

Животные
public class Animal
    {
        
        [Key]
        public int AnimalId { get; set; }

        public string Name { get; set; }

        public string Type { get; set; }

        public Eat Eats { get; set; }

        public int StaffId { get; set; }

        public virtual Staff Staff { get; set; }

    }


Модель сотрудников
public class Staff
    {
        [Key]
        public int StaffId { get; set; }

        public string SecondName { get; set; }

        public string FirstName { get; set; }

        public int Age { get; set; }

        public int Exp { get; set; }

        public int Pay{ get; set; }

        public ICollection<Animal> Animals { get; set; }

    }
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 2
samodum
@samodum
Какой вопрос - такой и ответ
@OwDafuq
1. У вас "несколько сотрудников которые привязаны к одному животному" не соответствует вашему же коду. У ваших животных только 1 сотрудник. У вас связь 1 ко многим. Для "несколько сотрудников которые привязаны к одному животному" нужно "многие-ко-многим".
2. "Через модели, контролеры или представления?". Через всё. Контроллер отдает на View модель, которая рендерится во View.
3. Решение:
3.1 Сначала сделать связь многие-ко-многим:
public class Animal
{
	[Key]
	public int AnimalId { get; set; }

	public string Name { get; set; }

	public string Type { get; set; }

	public Eat Eats { get; set; }

	public virtual ICollection<Staff> { get; set; }
}

3.2. Использовать это в коде:
//Метод контроллера, который вызывается при переходе на страницу. (example: localhost/Home/ShowStaff/2959)
public async Task<IActionResult> ShowStaff(int animalId)
{
	var result = await context.Animals.Include(x => x.Staff).FirstOrDefault(x => x.AnimalId == animalId); //Получаем всех сотрудников для животного
	return View(result); //отдаем результат во view
}
Ответ написан
Ваш ответ на вопрос

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

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