更新一个实体,刷新EF中的子实体。
更新一个实体,刷新EF中的子实体。
在我的项目中保存一个已存在的实体时,如果我在DbSet中不包括子实体,它会丢失先前的值。我无法弄清楚这个项目有什么问题,因为在我的其他项目中不需要这样做。
一些代码:
var quoteRequest = _session.Set() .Include(x => x.QuoteRequestInvites) .Include(x => x.QuoteRequestInvites.Select(y => y.SelectedService)) .Include(x => x.QuoteRequestInvites.Select(y => y.SelectedService).Select(z => z.Service)) .Include(x => x.QuoteRequestInvites.Select(y => y.Provider)) .Include(x => x.District) .Include(x => x.City) .FirstOrDefault(x => x.Id == quoteRequestId); if (quoteRequest == null) return Request.CreateResponse(HttpStatusCode.NotFound); foreach (var invite in quoteRequest.QuoteRequestInvites) { if (invite.Token == Guid.Empty) { _logger.Warn(invite, "Empty token changed for invite " + invite.Id); invite.Token = Guid.NewGuid(); _session.Commit(); } } _providerMailerService.ProcessInvites(quoteRequest); _customerMailerService.ProcessNotification(quoteRequest); _session.Attach(administrator); quoteRequest.ApprovalDate = DateTime.UtcNow; quoteRequest.ApprovedBy = administrator; _session.Commit();
问题是在项目的某个位置我们缺少了一些包含,所以我们丢失了数据。