Как я вижу, вы не добавляете элемент в DbSet и не вызываете SaveChanges после:
При добавлении предмета вы должны поместить его в DbSet
context.CND_PersonalData.Add(item);
context.SaveChanges();
когда вы хотите обновить, просто вызовите SaveChanges после обновления загруженного объекта
var PersonalData= context.CND_PersonalData.Where(d => d.Id == ItemId && d.UserId == UserId).SingleOrDefault();
PersonalData.Name = item.Name;
PersonalData.Title = item.Title;
context.SaveChanges();
Вы не можете просто присвоить переданный объект сущности, которую вы получили из БД, вам нужно изменить свойства. Если вы делаете это как вы, вы не меняли значения в загруженном объекте. Поэтому при вызове SaveChanges ничего не меняется. Вам нужно изменить свойства по одному.
Если вы не хотите этого делать, вы можете прикрепить свой элемент в БД, используя метод Attach для контекста.
context.Attach(item);
context.SaveChanges();
но вы должны быть осторожны, потому что, если вы загружаете и отслеживаете элемент с тем же идентификатором, что и вы, прежде чем проверять, является ли он пустым:
CND_PersonalData PersonalData = context.CND_PersonalData.Where(d => d.Id == ItemId && d.UserId == UserId).SingleOrDefault();
if (PersonalData == null)
{
тогда вы получите ошибку при сохранении, потому что контекст уже отслеживает элемент с тем же идентификатором, так что вы можете удалить эту проверку и просто проверить, существует ли она:
if (context.CND_PersonalData.Any(d => d.Id == ItemId && d.UserId == UserId))
{
и затем выполните ваш код