public async Task AllEventsLogged() { var tire = Tire.Create(0, me); var car = Car.Create("toyota", "camry", me); car.AddTire(tire, me); var options = new DbContextOptionsBuilder <CarMgmtContext>() .UseInMemoryDatabase(databaseName: "all_events_logged_to_db") .Options; Car createdCar = null; Tire createdTire = null; using (var context = new CarMgmtContext(options)) { var repo = new CarRepository(context); createdCar = repo.Add(car); createdTire = createdCar.Tires.Single(); await context.SaveChangesAsync(); } using (var context = new CarMgmtContext(options)) { var repo = new CarRepository(context); createdCar = await repo.GetAsync(createdCar.Id); var carCreatedEvent = context.CarEvents .Single(e => e.EventName == nameof(CarCreated)); var tireCreatedEvent = context.TireEvents .Single(e => e.TireId == createdTire.Id); createdCar.SetMake("new make", me); repo.Update(createdCar); await context.SaveChangesAsync(); } using (var context = new CarMgmtContext(options)) { var repo = new CarRepository(context); createdCar = await repo.GetAsync(createdCar.Id); var carUpdatedEvent = context.CarEvents .Single(e => e.EventName == nameof(MakeUpdated)); createdCar.SetTireMileage(createdTire.Id, 1000, me); repo.Update(createdCar); await context.SaveChangesAsync(); } using (var context = new CarMgmtContext(options)) { var tireUpdatedEvent = context.TireEvents .Single(e => e.EventName == nameof(MileageUpdated)); } }
public CarRepository(CarMgmtContext context) { _context = context; }