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]); }