Что касается кода, который я вижу, я не совсем уверен, в чем может быть проблема (пока). Тем не менее, мы можем использовать подход, чтобы определить, в чем проблема.
Сначала давайте упростим упрощение кода.
public static Guid AddPlanItem(PlanItemAddViewModel viewModel, IEnumerable<HttpPostedFileBase> images)
{
Guid planIdGUID = Guid.NewGuid();
using (var context = new ApplicationDbContext())
{
PlanItem planItem = context.Plans.Create();
planItem.PlanId = planIdGUID;
planItem.CreateDate = DateTime.Now;
planItem.PlanIdTitle = viewModel.PlanIdTitle;
planItem.PlanTitle = viewModel.PlanTitle;
planItem.SolutionTitle = viewModel.SolutionTitle;
planItem.ActivityCodeId = viewModel.ActivityCodeId;
planItem.RegionId = viewModel.RegionId;
planItem.OperatingCenterId = viewModel.OperatingCenterId;
planItem.DistrictId = viewModel.DistrictId;
planItem.ServiceCenterId = viewModel.ServiceCenterId;
planItem.PlannerRACFId = viewModel.PlannerRACFId;
planItem.SeverityId = viewModel.SeverityId;
planItem.Description = viewModel.Description;
planItem.PreviousPlan = viewModel.PreviousPlan;
context.Plans.Add(planItem);
context.SaveChanges();
}
return planIdGUID;
}
Таким образом, мы достигаем двух вещей:
- Удалив try / catch, мы сможем увидеть любые возможные исключения
- Упрощая логику сохранения, мы можем определить, где находится проблема. Если с этим кодом все работает, мы можем включить фрагмент, который сохраняет изображение и его поведение.
Во-вторых, если все работает нормально, мы можем добавить следующий фрагмент, изображения, но на этот раз с сохранением изменений за пределами for.
foreach (HttpPostedFileBase image in images)
{
var imageSubmit = new PlanItemImage
{
PlanId = planIdGUID,
PlanImageId = Guid.NewGuid(),
Image = image.ConvertToByte(),
ImageTitle = image.FileName
};
context.Image.Add(imageSubmit);
}
context.SaveChanges();
UPDATE
Проблема возникла из-за нескольких вызовов SaveChanges (). Редактирование кода для одного решает проблему.