我有一个与交易相关的问题。我有 2 个 API 应用程序。应用程序A中的API将调用应用程序B中的API。应用程序B中的API将更新一张表中的数据。更改应用程序B中完成的API,我们将再次通过linq在同一个表中获取数据。但数值不变。实际上,当我在 linq 代码中添加断点并检查 db.数据已经更新。请帮我解决一下。
应用程序 A 的 API 1
[HttpGet]
public async Task<ActionResult> Index()
{
var bookingInfo = await _unitOfWork.MasterBOFlightBookingRepository.Where(x => x.TravelmateId == "TF67271" && x.IsPrimaryPsgnr == true).FirstOrDefaultAsync();
var originalName = bookingInfo.PassengerName; //it is will
var client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://localhost:7175/WeatherForecast");
if (response.IsSuccessStatusCode)
{
Console.WriteLine(response.Content.ReadAsStringAsync());
}
//re check value . Add break point here.
bookingInfo = await _unitOfWork.MasterBOFlightBookingRepository.Where(x => x.TravelmateId == "TF67271" && x.IsPrimaryPsgnr == true).FirstOrDefaultAsync();
var newName = bookingInfo.PassengerName;
return Ok($"Change name from {originalName} to {newName}"); // it retun same name is Will
}
来自应用程序 B 的 api 2
[HttpGet(Name = "Get")]
public async Task<IActionResult> Get()
{
var personGenerator = new PersonNameGenerator();
var bookingInfo = await unitOfWork.MasterBOFlightBookingRepository.Where(x => x.TravelmateId == "TF67271" && x.IsPrimaryPsgnr == true).FirstOrDefaultAsync();
bookingInfo.PassengerName = personGenerator.GenerateRandomFirstAndLastName();
await unitOfWork.SaveChangeAsync();
return Ok(bookingInfo); //completed update data with random name
}
我从api 1中发现了问题。因为默认情况下实体将被EF跟踪。所以只需添加
.AsNoTracking()
即可解决问题。谢谢!