У меня есть стандартное обновление, выполняемое через linq to sql, но данные не сохраняются в базе данных.Обновление Linq to Sql, не сохраняющееся в базе данных
Я использую автогенерируемый класс с помощью конструктора файлов .dbml.
Оператор обновления ниже:
public static void UpdateEmailsInWorkingTable(Guid emailGuid, string modifiedEmail)
{
using (EmailDBDataContext DBContext = new EmailDBDataContext())
{
EmailAddress_Update EAUpdated = (from e in DBContext.EmailAddress_Updates
where e.EmailGuid == emailGuid
select e).SingleOrDefault();
EAUpdated.EmailAddress = modifiedEmail;
EAUpdated.IsValid = 'Y';
EAUpdated.UpdateFlag = true;
EAUpdated.LastChangedDtTm = DateTime.Now;
try
{
DBContext.SubmitChanges(ConflictMode.FailOnFirstConflict);
}
catch (ChangeConflictException ex)
{
// do stuff here
}
}
}
Я просмотрел мой автоматически генерируемой DataContext класса и только вопиющая разница в том, что таблица в вопросе EmailAddress_Update не реализует два интерфейса INotifyPropertyChanging и INotifyPropertyChanged, что другой автоматически создаваемые сущности.
Я предполагаю, что это причина того, почему изменения не сохраняются, не так ли?
Проще говоря, ни один из методов расширяемости Определения не генерируются для любой части этого одного класса. Если это является причиной моих проблем, что в базе данных будет причиной того, что это не будет автоматически генерироваться?
Благодаря ~
В вашем блоке catch catch используется метод EmailDBContext, который должен быть DBContext? –
да простите, я изменил его и забыл изменить его там тоже - это не влияет на исходную проблему, просто опечатка с моей стороны. –
Если вы вызываете 'SingleOrDefault', вы лучше справляетесь с тем, что' EAUpdated' может быть нулевым указателем. Если вы не хотите обрабатывать нулевой регистр, вы должны просто называть 'Single'. –