Как выполнить массовую вставку через свойство навигации в Entity Framework Core с безопасностью типов?C#

Место общения программистов C#
Anonymous
Как выполнить массовую вставку через свойство навигации в Entity Framework Core с безопасностью типов?

Сообщение Anonymous »

У меня есть следующая структура базы данных, в которой Студент и Курс связаны отношением многие-ко-многим в StudentCourseLinks. Мне нужно выполнить массовую вставку в StudentCourseLinks, где я вставляю новый CourseId для всех записей Student, принадлежащих определенному SchoolId.
Вот мои упрощенные модели:

Код: Выделить всё

public class Student
{
public int Id { get; set; }
public int SchoolId { get; set; }

// Navigation property to many-to-many relationship
public ICollection Courses { get; set; }
}

public class Course
{
public int Id { get; set; }
public ICollection Students { get; set; }
}

public class StudentCourseLink
{
public int StudentId { get; set; }
public Student Student { get; set; }
public int CourseId { get; set; }
public Course Course { get; set; }
}
Я хочу добиться следующего SQL-запроса в Entity Framework Core, но с безопасностью типов и массовыми операциями (т. е. избегая многократного обращения к базе данных):

Код: Выделить всё

INSERT INTO StudentCourseLinks (StudentId, CourseId)
SELECT s.Id, 1
FROM Students s
WHERE s.SchoolId = 1;
Я хочу добавить новый CourseId (например, 1) для всех учащихся, принадлежащих SchoolId = 1, но я хотел бы добиться этого с помощью типобезопасного API Entity Framework Core, включая использование свойств навигации между Студентом и Курсом. Я бы хотел, чтобы условная вставка также была динамической, поскольку мои условия могут измениться.
Есть ли способ выполнить эту массовую вставку с помощью Entity Framework Core, сохраняя безопасность типов и избегая необработанного SQL?< /p>
Будем очень признательны за любые рекомендации или решения по этому поводу!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -core-with

Вернуться в «C#»