private void Current_reference_value_for_one_to_many_principal_can_be_read_and_set(EntityState state)
        {
            using (var context = new F1Context())
            {
                var teamEntry = GetTeamEntry(context);
                teamEntry.State = state;
                var refEntry = teamEntry.Reference(t => t.Gearbox);

                var value = refEntry.CurrentValue;
                Assert.Same(teamEntry.Entity.Gearbox, value);

                value = new Gearbox { Id = -7 };
                refEntry.CurrentValue = value;
                Assert.Same(teamEntry.Entity.Gearbox, value);

                if (state != EntityState.Detached && state != EntityState.Deleted)
                {
                    // FK is fixed up without a call to DetectChanges
                    Assert.Equal(teamEntry.Entity.GearboxId, value.Id);
                }

                if (state == EntityState.Deleted)
                {
                    Assert.Throws<InvalidOperationException>(() => context.ChangeTracker.DetectChanges()).
                        ValidateMessage("RelatedEnd_UnableToAddRelationshipWithDeletedEntity");
                }
                else
                {
                    context.ChangeTracker.DetectChanges();
                }

                value = refEntry.CurrentValue;
                Assert.Same(teamEntry.Entity.Gearbox, value);

                refEntry.CurrentValue = null;
                Assert.Null(refEntry.CurrentValue);
                Assert.Null(teamEntry.Entity.Gearbox);
                if (state != EntityState.Detached)
                {
                    // FK is fixed up without a call to DetectChanges
                    // For Deleted state the FK should already have been null
                    Assert.Null(teamEntry.Entity.GearboxId);
                }
                context.ChangeTracker.DetectChanges();
            }
        }
        private DbEntityEntry<Gearbox> GetGearboxEntry(F1Context context)
        {
            var team = GetTeamEntry(context).Entity;
            var gearbox = new Gearbox { Id = 1, Name = "WubbsyGears" };
            team.Gearbox = gearbox;
            team.Engine.Gearboxes.Add(gearbox);

            context.Entry(team).State = EntityState.Unchanged;

            return context.Entry(gearbox);
        }