コード例 #1
0
        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));
            }
        }
コード例 #2
0
 public CarRepository(CarMgmtContext context)
 {
     _context = context;
 }