private static void AddNewHorseToDisconnectedSamuraiObject()
        {
            var samurai = _context.Pirates.AsNoTracking().FirstOrDefault(s => s.Id == 23);

            samurai.Ship = new Ship {
                Name = "Mr. Ed"
            };
            using (var newContext = new PirateContext())
            {
                newContext.Attach(samurai);
                newContext.SaveChanges();
            }
        }
        private static void ModifyingRelatedDataWhenNotTracked()
        {
            var samurai = _context.Pirates.Include(s => s.Sayings).FirstOrDefault(s => s.Id == 2);
            var quote   = samurai.Sayings[0];

            quote.Text = "Did you hear that again?";
            using (var newContext = new PirateContext())
            {
                //newContext.Quotes.Update(quote);
                newContext.Entry(quote).State = EntityState.Modified;
                newContext.SaveChanges();
            }
        }
        private static void AddQuoteToExistingSamuraiNotTracked_Easy(int samuraiId)
        {
            var quote = new Saying
            {
                Text     = "Now that I saved you, will you feed me dinner again?",
                PirateId = samuraiId
            };

            using (var newContext = new PirateContext())
            {
                newContext.Sayings.Add(quote);
                newContext.SaveChanges();
            }
        }
        private static void AddQuoteToExistingSamuraiNotTracked(int pirateId)
        {
            var pirate = _context.Pirates.Find(pirateId);

            pirate.Sayings.Add(new Saying
            {
                Text = "Now that I saved you, will you feed me dinner?"
            });
            using (var newContext = new PirateContext())
            {
                newContext.Pirates.Attach(pirate);
                newContext.SaveChanges();
            }
        }
        public void CanInsertIntoDatabase()
        {
            var builder = new DbContextOptionsBuilder();

            builder.UseInMemoryDatabase("CanInsertPirate");

            using (var context = new PirateContext(builder.Options))
            {
                var pirate = new Pirate();

                context.Pirates.Add(pirate);

                context.SaveChanges();

                Assert.AreNotEqual(0, pirate.Id);
                Assert.AreEqual(EntityState.Added, context.Entry(pirate).State);
            }
        }