public async Task <IActionResult> BulkInsert(int num) { using (var db = new AppDb()) { var time = DateTime.Now; await db.Connection.OpenAsync(); var txn = await db.Connection.BeginTransactionAsync(); try { for (var i = 0; i < num; i++) { var blogPost = new BlogPost { Db = db, Title = "bulk", Content = "bulk " + num }; await blogPost.InsertAsync(); } } catch (Exception) { await txn.RollbackAsync(); throw; } await txn.CommitAsync(); var timing = $"Async: Inserted {num} records in " + (DateTime.Now - time); Console.WriteLine(timing); return(new OkObjectResult(timing)); } }
public async Task <IActionResult> Post([FromBody] BlogPost body) { await Db.Connection.OpenAsync(); body.Db = Db; await body.InsertAsync(); return(new OkObjectResult(body)); }
public async Task <IActionResult> Post([FromBody] BlogPost body) { using (var db = new AppDb()) { await db.OpenAsync(); await BlogPost.InsertAsync(db, body); return(new OkObjectResult(body)); } }
public async Task <IActionResult> Post([FromBody] BlogPost body) { // Abrir una conexion await Db.Connection.OpenAsync(); // Body es de tipo blogpost, por lo cual tiene una propiedad Db body.Db = Db; // Insertar de forma asincrona el post, usando al body. await body.InsertAsync(); // Retornar 201 y el item creado return(new OkObjectResult(body)); }
public static void Run(int iterations, int concurrency, int ops) { var recordNum = 0; async Task InsertOne(AppDb db) { var blog = new BlogPost(db) { Title = "Title " + Interlocked.Increment(ref recordNum), Content = "content" }; await blog.InsertAsync(); } var selected = new ConcurrentQueue <string>(); async Task SelectTen(AppDb db) { var blogPosts = await(new BlogPostQuery(db)).LatestPostsAsync(); selected.Enqueue(blogPosts.FirstOrDefault().Title); } var sleepNum = 0; async Task SleepMillisecond(AppDb db) { using (var cmd = db.Connection.CreateCommand()) { cmd.CommandText = "SELECT SLEEP(0.001)"; await cmd.ExecuteNonQueryAsync(); } Interlocked.Increment(ref sleepNum); } using (var db = new AppDb()) { db.Connection.Open(); using (var cmd = db.Connection.CreateCommand()) { cmd.CommandText = "DELETE FROM `BlogPost`"; cmd.ExecuteNonQuery(); } } PerfTest(InsertOne, "Insert One", iterations, concurrency, ops).GetAwaiter().GetResult(); using (var db = new AppDb()) { db.Connection.Open(); using (var cmd = db.Connection.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM `BlogPost`"; Console.WriteLine("Records Inserted: " + cmd.ExecuteScalar()); Console.WriteLine(); } } PerfTest(SelectTen, "Select Ten", iterations, concurrency, ops).GetAwaiter().GetResult(); Console.WriteLine("Records Selected: " + selected.Count * 10); string firstRecord; if (selected.TryDequeue(out firstRecord)) { Console.WriteLine("First Record: " + firstRecord); } Console.WriteLine(); PerfTest(SleepMillisecond, "Sleep 1ms", iterations, concurrency, ops).GetAwaiter().GetResult(); Console.WriteLine("Total Sleep Commands: " + sleepNum); Console.WriteLine(); }
public static void Run(IAppDb appDb, int iterations, int concurrency, int ops) { var recordNum = 0; async Task InsertOne(IAppDb db) { var blog = new BlogPost(db) { Title = "Title " + Interlocked.Increment(ref recordNum), Content = "Content " + recordNum }; await blog.InsertAsync(); } var selected = new ConcurrentQueue <BlogPost>(); async Task SelectTen(IAppDb db) { var blogPosts = await(new BlogPostQuery(db)).Random10Async(recordNum); selected.Enqueue(blogPosts.FirstOrDefault()); } var updatedNum = 0; async Task UpdateOne(IAppDb db) { BlogPost blogPost; if (selected.TryDequeue(out blogPost) && blogPost != null) { blogPost.Db = db; blogPost.Content = "Content Updated " + Interlocked.Increment(ref updatedNum); await blogPost.UpdateAsync(); } } using (var db = appDb.New()) { db.Connection.Open(); using (var cmd = db.Connection.CreateCommand()) { cmd.CommandText = "DELETE FROM BlogPost"; cmd.ExecuteNonQuery(); } } PerfTest(appDb, InsertOne, "Insert One", iterations, concurrency, ops).GetAwaiter().GetResult(); using (var db = appDb.New()) { db.Connection.Open(); using (var cmd = db.Connection.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM BlogPost"; Console.WriteLine("Records Inserted: " + cmd.ExecuteScalar()); Console.WriteLine(); } } PerfTest(appDb, SelectTen, "Select Ten", iterations, concurrency, ops).GetAwaiter().GetResult(); Console.WriteLine("Records Selected: " + selected.Count * 10); BlogPost firstRecord; if (selected.TryPeek(out firstRecord)) { Console.WriteLine("First Record: " + firstRecord.Content); } Console.WriteLine(); PerfTest(appDb, UpdateOne, "Update One", iterations, concurrency, ops).GetAwaiter().GetResult(); Console.WriteLine("Records Updated: " + updatedNum); using (var db = appDb.New()) { db.Connection.Open(); var firstRecordUpdated = new BlogPostQuery(db).FindOne(firstRecord.Id); if (firstRecordUpdated != null) { Console.WriteLine("First Record: " + firstRecordUpdated.Content); } } }