public void Added_entity_with_conceptually_null_FK_with_cascade_delete_is_detached()
    {
        using var context = new KcContext();
        var entry      = context.Entry(new TSecondDependent()).GetInfrastructure();
        var fkProperty = entry.EntityType.FindProperty("Id");

        entry[fkProperty] = 77;
        entry.SetEntityState(EntityState.Added);

        entry[fkProperty] = null;
        entry.HandleConceptualNulls(false, force: false, isCascadeDelete: false);

        Assert.Equal(EntityState.Detached, entry.EntityState);
    }
    public void Entity_with_partially_null_composite_FK_without_cascade_delete_is_orphaned()
    {
        using var context = new KcContext();
        var entry       = context.Entry(new TCompositeSecondDependent()).GetInfrastructure();
        var entityType  = entry.EntityType;
        var fkProperty1 = entityType.FindProperty("FirstId1");
        var fkProperty2 = entityType.FindProperty("FirstId2");

        entry[entityType.FindProperty("Id1")] = 66;
        entry[entityType.FindProperty("Id2")] = "Bar";
        entry[fkProperty1] = 77;
        entry[fkProperty2] = "Foo";
        entry.SetEntityState(EntityState.Unchanged);

        entry[fkProperty1] = null;
        entry.HandleConceptualNulls(false, force: false, isCascadeDelete: false);

        Assert.Equal(EntityState.Modified, entry.EntityState);

        Assert.Equal(77, entry[fkProperty1]);
        Assert.Null(entry[fkProperty2]);
    }