У меня есть этот метод:
public void AddFile(MediaFileName mediaFile)
{
// Get a list of items which must be removed
var tmp = MediaFileNames.ToList().Where(m => m.FileName.Contains(mediaFile.FileType.ToString())).ToList(); // FileType is an enum
// remove each item from the Navigation property from memory
tmp.ForEach(f => MediaFileNames.Remove(f));
// Store items with an id in a list. This list is accessed by the presenter to delete these records
tmp.Where(f => f.Id != 0).ToList().ForEach(f => _filesToRemove.Add(f));
// Set the items filename
mediaFile.FileName = mediaFile.FileType.ToString() + new FileInfo(mediaFile.SourceFile).Extension;
// Add the item to the navigation property
MediaFileNames.Add(mediaFile);
}
MediaFilesNames - это свойство навигации класса Media.
Я храню список (_filesToRemove) элементов, которые необходимо удалить из базы данных.,Этот список доступен из моего репозитория:
public bool Update(Act act)
{
foreach (var file in act.Media.FilesToRemove)
{
if (_context.MediaFileNames.FirstOrDefault(f => file.Id == f.Id) != null)
_context.MediaFileNames.DeleteObject(file);
}
_context.SaveChanges();
return true;
}
Когда вызывается SaveChanges, я получаю это сообщение:
The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.
Я не понимаю, почему я получаю этосообщение, потому что я удаляю существующие элементы и добавляю только один новый элемент.Я надеюсь, что вы можете мне помочь.