Я использую EF4.0 и имею объект Voucher, который имеет свойство VoucherStatusTypeId (который является внешним ключом) и свойство навигации VoucherStatusType.
Я выполняю вызов SingleOrDefault в контексте объекта для возвратаодин ваучер, а затем обновить его свойства.Я заметил, что в ту минуту, когда я установил свойство VoucherStatusTypeId, EF выполняет запрос к базе данных, возвращая ВСЕ записи ваучеров с VoucherstatusId, совпадающим со значением, которое я пытаюсь установить.Это вызывает у меня большое разочарование, потому что в таблицах ваучеров много тысяч записей, и этот запрос возвращает огромный объем данных, что кажется беспричинным.
Может кто-нибудь объяснить, почему EF делает это и чтоЯ могу сделать, чтобы остановить это / обойти это?
var repo = new VoucherRepository();
var voucher = repo.GetValidByVoucherNumber(request.VoucherNrRedeemed);
voucher.BranchRedeemedId = branchId;
voucher.CardRedeemedId = customerCardId;
voucher.VoucherStatusTypeId = (int)VoucherStatusTypeEnum.Redeemed; //This line causes a second query
voucher.RedeemedDate = DateTime.Now;
repo.Update(voucher);
Объект хранилища по сути является просто оболочкой для ObjectContext