更新一个实体,刷新EF中的子实体。

14 浏览
0 Comments

更新一个实体,刷新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();

问题是在项目的某个位置我们缺少了一些包含,所以我们丢失了数据。

0