Я использую Entityframework для своего приложения, использующего архитектуру Model first. Он отлично работает везде, кроме странной проблемы, с которой я столкнулся сегодня.
В основном, у нас есть одна Project
таблица и одна Entity
таблица. И есть одна таблица ассоциации для Project и Entity, которая называется ProjectEntityLink
table. Теперь вы можете обновить свойства таблицы ProjectEntityLink
как со страницы проекта, так и со страницы сущности. Обе страницы используют одно и то же частичное представление во всплывающем окне и один и тот же код обновления для обновления свойств таблицы ProjectEntityLink
. Теперь, когда я обновляю свойства ассоциации ссылок со страницы Entity, она работает отлично, но если я обновляю свойства ассоциации ссылок со страницы Project, то это делает некоторые странные вещи. Он обновляет все свойства, кроме одного свойства с именем StartApplyDate
, хотя код в обоих местах одинаков.
Может кто-нибудь предложить причину и решение этой проблемы?
ОБНОВЛЕНИЕ
Вот код для обновления данных. Как уже упоминалось, один и тот же код использовался на 2 разных страницах с использованием одной и той же формы частичного просмотра. Он отлично работает в одном месте, а не в другом.
if (_prevDataChangeStartApplyDate != projectEntityLink.DataChangeStartApplyDate)
{
_projectEntityLinkToUpdate.StartApplyDate = projectEntityLink.DataChangeStartApplyDate;
//if the change apply date has changed then create an historic record based on the current state
DateTime _historyrecord_startApplyDate = projectEntityLink.StartApplyDate.HasValue ? projectEntityLink.StartApplyDate.Value : projectEntityLink.CollectionStartDate;
DateTime _historyrecord_endApplyDate = projectEntityLink.DataChangeStartApplyDate.Value.AddDays(-1);
projectEntityLink_History _prevLink = _unitOfWork.Projects.GetNewProjectLinkHistory(_projectEntityLinkToUpdate.ID,_projectEntityLinkToUpdate.ProjectID,
_projectEntityLinkToUpdate.LinkID,_historyrecord_startApplyDate,
_historyrecord_endApplyDate,_projectEntityLinkToUpdate.DatasetVersionID,_projectEntityLinkToUpdate.TUID,
_projectEntityLinkToUpdate.PeriodLengthID);
_unitOfWork.projectEntityLinks_History.Add(_prevLink);
}
else
{
_projectEntityLinkToUpdate.StartApplyDate = projectEntityLink.StartApplyDate;
}
_projectEntityLinkToUpdate.DataChangeStartApplyDate = projectEntityLink.DataChangeStartApplyDate;
_projectEntityLinkToUpdate.LinkID = projectEntityLink.LinkID;
_projectEntityLinkToUpdate.EndApplyDate = projectEntityLink.EndApplyDate;
_projectEntityLinkToUpdate.TUID = projectEntityLink.TUID;
_projectEntityLinkToUpdate.DatasetVersionID = projectEntityLink.DatasetVersionID;
_projectEntityLinkToUpdate.PeriodLengthID = projectEntityLink.PeriodLengthID;
_unitOfWork.projectEntityLinks.Edit(_projectEntityLinkToUpdate);
int recordsUpdated = _unitOfWork.SaveChanges();
if (recordsUpdated > 0)
return _projectEntityLinkToUpdate;
else
return null;