Beispiel #1
0
 public virtual Task RegisterItn(string itn)
 {
     ItnNumerators.Add(new ItnNumerator
     {
         ItineraryNumber = itn,
         CurrentNumber   = 0
     });
     return(SaveChangesAsync());
 }
Beispiel #2
0
        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());
        }