Вы обновляете одну и ту же ссылку на объект каждый раз. Переместите объявление нового DepartmentCar внутри цикла.
public void MapCarIdToDepartment(int DepartmentId, List<Guid> carIds)
{
foreach (var item in carIds)
{
var departmentCar = new DepartmentCar
{
CarId = item,
DepartmentId = DepartmentId
};
Save(departmentCar);
}
}
В идеале, хотя все, что вам нужно сделать, это создать новую машину, добавить ее в DbSet Cars DbContext, а после этого вызвать SaveChanges для контекста в конце. Хотя для идентификаторов, если возможно получить существующие автомобили, вам нужно будет проверить контекст для того существующего объекта, чтобы обновить против создания нового.
public void MapCarIdToDepartment(int departmentId, List<Guid> carIds)
{
using (var context = new CarContext())
{
foreach (var carId in carIds)
{
var car = context.DepartmentCars.SingleOrDefault(x => x.CarId == carId);
if (car == null)
{
car = new DepartmentCar{ CarId = carId };
context.DepartmentCars.Add(car);
}
car.DepartmentId = departmentId;
}
context.SaveChanges();
}
}
Это позволит проверить существующий автомобиль, обновить его, если необходимо, или создать новый и обновить. Если создание сущности достаточно сложное, создайте метод фабрики, такой как «createCar (carId, [+ другие необходимые значения / ссылки])», чтобы облегчить выполнение кода.
Здесь рассмотрим внедрение зависимости или единицу работы для DbContext, а не обновление контекста в методе / классе. DbContexts - это мощный инструмент, который вы можете использовать, поэтому я не рекомендую пытаться скрыть их за традиционными интерфейсами оболочки CRUD. (Получить (), Сохранить () и т. Д.)