public virtual Task RegisterItn(string itn) { ItnNumerators.Add(new ItnNumerator { ItineraryNumber = itn, CurrentNumber = 0 }); return(SaveChangesAsync()); }
public async Task <int> GenerateNextItnMember(string itn) { var entityInfo = this.GetEntityInfo <ItnNumerator>(); var currentNumberColumn = entityInfo.PropertyMapping[nameof(ItnNumerator.CurrentNumber)]; var itnNumberColumn = entityInfo.PropertyMapping[nameof(ItnNumerator.ItineraryNumber)]; return((await ItnNumerators .FromSqlRaw( $"UPDATE {entityInfo.Schema}.\"{entityInfo.Table}\" SET \"{currentNumberColumn}\" = \"{currentNumberColumn}\" + 1 WHERE \"{itnNumberColumn}\" = '{itn}' RETURNING *;", itn) // Materializing query here because EF cannot compose queries with 'UPDATE' .ToListAsync()) .Select(c => c.CurrentNumber) .Single()); }