Модель первой сущности не обновляет только одно значение поля в таблице БД - PullRequest
0 голосов
/ 19 марта 2019

Я использую 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;
...