public async Task Update(TalkDbModel model) { await this._db.ExecuteAsync( "UPDATE [Talk] SET [Name]=@Name, [Start]=@Start, [Url]=@Url, [Subtitle]=@Subtitle WHERE [Id]=@TalkId", new { Name = model.Name, Start = model.Start, Url = model.Url, Subtitle = model.Subtitle, TalkId = model.Id }); await this.UpdateBindings(model); }
private async Task UpdateBindings(TalkDbModel model) { // speakers await this._db.ExecuteAsync("DELETE FROM [TalkSpeaker] WHERE [TalkId]=@TalkId", new { TalkId = model.Id }); foreach (var speaker in model.Speakers ?? new List <PersonDbEntity>()) { await this._db.ExecuteAsync( "INSERT INTO [TalkSpeaker] ([TalkId], [PersonId]) VALUES (@TalkId, @PersonId)", new { TalkId = model.Id, PersonId = speaker.Id }); } // organizers await this._db.ExecuteAsync("DELETE FROM [TalkOrganizer] WHERE [TalkId]=@TalkId", new { TalkId = model.Id }); foreach (var organizer in model.Organizers ?? new List <OrganizationDbEntity>()) { await this._db.ExecuteAsync( "INSERT INTO [TalkOrganizer] ([TalkId], [OrganizationId]) VALUES (@TalkId, @OrganizationId)", new { TalkId = model.Id, OrganizationId = organizer.Id }); } // categories await this._db.ExecuteAsync("DELETE FROM [TalkCategory] WHERE [TalkId]=@TalkId", new { TalkId = model.Id }); foreach (var category in model.DirectCategories ?? new List <CategoryDbEntity>()) { await this._db.ExecuteAsync( "INSERT INTO [TalkCategory] ([TalkId], [CategoryId]) VALUES (@TalkId, @CategoryId)", new { TalkId = model.Id, CategoryId = category.Id }); } // recordings await this._db.ExecuteAsync("DELETE FROM [TalkRecording] WHERE [TalkId]=@TalkId", new { TalkId = model.Id }); foreach (var recording in model.Recordings?.Where(r => !string.IsNullOrEmpty(r.Url) || !string.IsNullOrEmpty(r.YouTubeVideoId)) ?? new List <TalkRecordingDbEntity>()) { await this._db.ExecuteAsync( "INSERT INTO [TalkRecording] ([TalkId], [Url], [YouTubeVideoId]) VALUES (@TalkId, @Url, @YouTubeVideoId)", new { TalkId = model.Id, Url = recording.Url, YouTubeVideoId = recording.YouTubeVideoId }); } }
public async Task <int> Create(TalkDbModel model) { var talkId = (await this._db.QueryAsync <int>( @"INSERT INTO [Talk] ([Name], [Start], [Url], [Subtitle]) VALUES (@Name, @Start, @Url, @Subtitle) SELECT CAST(SCOPE_IDENTITY() as int)", new { Name = model.Name, Start = model.Start, Url = model.Url, Subtitle = model.Subtitle })).Single(); model.Id = talkId; await this.UpdateBindings(model); return(model.Id); }