Работала над этой проблемой обновления City Entity Framework немного. Возможно, один из вас может видеть, что мне не хватает.C# Entity Framework Update SaveChanges() не обновляет запись БД
Проблема в пределах части кода userEntry
. Я проследил и убедился, что userEntry
действительно заполнен информацией, которую я намерен обновить. Когда вызывается entities.SaveChanges();
, запись не обновляется в базе данных.
int userId;
using (Entities entities = new Entities())
{
MSIFeedStoreData feedStoreEntry = entities.MSIFeedStoreDatas
.FirstOrDefault((d) => d.Alias == user.Alias);
if (Object.ReferenceEquals(feedStoreEntry, null))
{
throw new ArgumentException("The user's alias could not be located in the feed store. The user cannot be added at this time.");
}
int feedStorePersonnelIdValue;
if (Int32.TryParse(feedStoreEntry.PersonellID, out feedStorePersonnelIdValue))
{
user.EmployeeId = feedStorePersonnelIdValue;
}
else
{
throw new ApplicationException("DATABASE BUG CHECK: An entry was found in the feed store for this user but the personnel ID could not be parsed.");
}
MSIUser userEntry = entities.MSIUsers
.FirstOrDefault((u) => u.EmployeeID == feedStorePersonnelIdValue);
if (Object.ReferenceEquals(userEntry, null))
{
userEntry = Mapper.Map<MSIUser>(user);
userEntry = entities.MSIUsers.Add(userEntry);
}
else
{
Mapper.DynamicMap<User, MSIUser>(user, userEntry);
entities.MSIUsers.Attach(userEntry);
}
userId = userEntry.MSIUser_ID;
entities.SaveChanges();
}
return userId;
}
Вы ничего не меняете. Каковы ваши ожидаемые результаты? –
'Object.ReferenceEquals (feedStoreEntry, null)' гораздо проще читать как 'feedStoreEntry == null' и делает то же самое. –
Изменение находится здесь: else { Mapper.DynamicMap <Пользователь, MSIUser> (пользователь, userEntry); entity.MSIUsers.Attach (userEntry); } Существует запись пользователя, прошедшая через вызов ajax PUT. пользователь затем сопоставляется с userEntry через Mapper.DynamicMap <Пользователь, MSIUser> (пользователь, userEntry); Я проверил посредством отладки, что это происходит. –