Я запускаю (старое) веб-приложение MVC3 в базе данных MSSQL, сначала использую код EF 6.0 и шаблон репозитория.
система работала в производстве в течение последних 7 лет (EF былобновлено около 1 года назад).
Я столкнулся с очень странным исключением в 1 конкретной области системы.при попытке создать или обновить определенные объекты я сталкиваюсь со следующим исключением:
Операция не выполнена: отношение не может быть изменено, поскольку одно или несколько свойств внешнего ключа не могут быть равны нулю.Когда в отношение вносится изменение, для соответствующего свойства внешнего ключа устанавливается нулевое значение.Если внешний ключ не поддерживает нулевые значения, необходимо определить новое отношение, свойству внешнего ключа должно быть назначено другое ненулевое значение или несвязанный объект должен быть удален.
здесьодна из проблемных сущностей:
public class BeaconAppErrorLog
{
[Key]
public int Id { get; set; }
public int EntityId { get; set; }
public string RawJson { get; set; }
public DateTime SavedAt { get; set; }
public int? EmployeeId { get; set; }
[ForeignKey("EmployeeId")]
public Employee Employee { get; set; }
public int? ContainerId { get; set; }
[ForeignKey("ContainerId")]
public Container Container { get; set; }
public int? DailyTrackId { get; set; }
[ForeignKey("DailyTrackId")]
public DailyTrack DailyTrack { get; set; }
public int? ClientId { get; set; }
[ForeignKey("ClientId")]
public Client Client { get; set; }
public string Error { get; set; }
}
вот код для создания и сохранения:
DataContext.BeaconAppErrorLogs.Add(new BeaconAppErrorLog()
{
EntityId = 2,
SavedAt = DateTime.Now,
EmployeeId = activity.EmployeeId,
DailyTrackId = activity.DailytrackId,
Error = error
});
DataContext.SaveChanges();
поля 'EmployeeId' и 'DailyTrackId' являются внешними ключами, они получают допустимые значения (т. е. идентификаторы, которые соответствуют соответствующей сущности и существуют в БД)
практически идентичный код пишется сотни раз по всему приложению и функционирует должным образом (даже для одной и той же сущности).
Понятия не имею, что происходит и почему, и пока все попытки, которые я пытался, не сработали.
Ваша помощь будет высоко оценена!
Спасибо,
Nir