Привет, поэтому встречайте это исключение каждый раз при вызове savechanges(). Есть еще одна публикация, в которой есть несколько ответов, но я не могу указать, какой ответ подходит для моей проблемы. Также кажется, что у каждого другое мнение об этом исключении.DbUpdateException был необработанным?
Ссылка на другую должность: [ссылка] Entity Framework: "Store update, insert, or delete statement affected an unexpected number of rows (0)."
Мой Исключение:
Необработанное исключение типа 'System.Data.Entity.Infrastructure.DbUpdateException' произошло в EntityFramework.dll
Дополнительная информация: Произошла ошибка при обновлении записей. Подробнее см. Внутреннее исключение.
Я пытаюсь сохранить почту в своем хранилище. Я использую рамку 6.1.3 сущности и SQL-сервер 2014.
Это мой метод, который хранит почту:
public int StoreMail(PhishingMail PhishingMail)
{
using (var phishingMailStorage = new PhishFinderDBModel())
{
try
{
//// var manager = ((IObjectContextAdapter)phishingMailStorage).ObjectContext.ObjectStateManager;
//// phishingMailStorage.PhishingMail.Attach(PhishingMail);
phishingMailStorage.Entry(PhishingMail).State = PhishingMail.PhishingMailId == 0 ? EntityState.Added : EntityState.Modified;
phishingMailStorage.SaveChanges();
//// manager.ChangeObjectState(PhishingMail, EntityState.Modified);
//// phishingMailStorage.SaveChanges();
Console.WriteLine("Het is gelukt");
}
catch (OptimisticConcurrencyException)
{
var ctx = ((IObjectContextAdapter)phishingMailStorage).ObjectContext;
ctx.Refresh(RefreshMode.ClientWins, phishingMailStorage.PhishingMail);
phishingMailStorage.SaveChanges();
}
}
return PhishingMail.PhishingMailId;
}
Это мой метод получает письмо, что делает работу:
public List<PhishingMail> GetEmails()
{
phishingMailList = new List<PhishingMail>();
FolderId InboxId = new FolderId(WellKnownFolderName.Inbox, "******@******.nl");
FindItemsResults<Item> findResults = service.FindItems(InboxId, new ItemView(20));
foreach (Item phishingmail in findResults.Items)
{
if (!((EmailMessage)phishingmail).IsRead)
{
/// ((EmailMessage)phishingmail).IsRead = true;
((EmailMessage)phishingmail).Update(ConflictResolutionMode.AutoResolve);
}
PhishingMail mail = MailMapper.Map((EmailMessage)phishingmail);
//// ((EmailMessage)phishingmail).Load(new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.IsRead));
phishingMailList.Add(mail);
/// Console.WriteLine(mail.Type);
}
return phishingMailList;
}
Почему savechanges() не работает и как я могу заставить его работать?
спасибо.
Какая строка генерирует исключение и что находится во внутреннем исключении? –
выглядит так, как будто вы захотите поймать 'DbUpdateException' и просмотреть сведения об исключении, чтобы выяснить, что происходит. – user1666620