public async Task TestUnitOfWork() { Assert.NotNull(context); var itemId = NewId; await repo.InUnitOfWorkAsync(async() => { // create a folder-hierarchy /A/B/C var item = await repo.Create(new BookmarkEntity { Id = itemId, ChildCount = 0, Created = DateTime.UtcNow, DisplayName = "A", Path = "/", SortOrder = 0, Type = ItemType.Folder, Url = "http://url", UserName = Username }); // rollback the transaction return(false, item); }); var bm = await repo.GetBookmarkById(itemId, Username); Assert.Null(bm); itemId = NewId; await Assert.ThrowsAsync <Exception>(() => { return(repo.InUnitOfWorkAsync <BookmarkEntity>(async() => { // create a folder-hierarchy /A/B/C await repo.Create(new BookmarkEntity { Id = itemId, ChildCount = 0, Created = DateTime.UtcNow, DisplayName = "A", Path = "/", SortOrder = 0, Type = ItemType.Folder, Url = "http://url", UserName = Username }); // rollback the transaction throw new Exception("error"); })); }); bm = await repo.GetBookmarkById(itemId, Username); Assert.Null(bm); itemId = NewId; await repo.InUnitOfWorkAsync(async() => { // create a folder-hierarchy /A/B/C var item = await repo.Create(new BookmarkEntity { Id = itemId, ChildCount = 0, Created = DateTime.UtcNow, DisplayName = "A", Path = "/", SortOrder = 0, Type = ItemType.Folder, Url = "http://url", UserName = Username }); return(true, item); }); bm = await repo.GetBookmarkById(itemId, Username); Assert.NotNull(bm); }