Generate guid's for primary key client side (#257)

* Generate guid's for primary key client side
pull/258/head
Christopher Jolly 1 year ago committed by GitHub
parent f97148f745
commit 8a5c4d83ec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -40,7 +40,7 @@ namespace EntityFrameworkCore.Jet.ValueGeneration.Internal
protected override ValueGenerator? FindForType(IProperty property, ITypeBase typeBase, Type clrType)
=> property.ClrType.UnwrapNullableType() == typeof(Guid)
? property.ValueGenerated == ValueGenerated.Never || property.GetDefaultValueSql() != null
? property.ValueGenerated == ValueGenerated.Never || (property.GetDefaultValueSql() != null && !property.IsPrimaryKey())
? new TemporaryGuidValueGenerator()
: new JetSequentialGuidValueGenerator()
: base.FindForType(property, typeBase, clrType);

@ -1,5 +1,13 @@
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Deadlock_on_inserts_and_deletes_with_dependents_is_handled_correctly
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 1)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 100)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 3)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 4)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_and_updates_are_batched_correctly
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: False, clientOrder: False)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: False, clientOrder: True)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: True, clientOrder: False)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: True, clientOrder: True)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: True, clientFk: False, clientOrder: False)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: True, clientFk: False, clientOrder: True)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: True, clientFk: True, clientOrder: False)
@ -2675,6 +2683,41 @@ EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_add_and_remove_entit
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_add_table_splitting_dependent_after_principal
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_enumerate_entity_set
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_non_owner_principal_for_owned
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_TPT_dependents_with_identity
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_remove_multiple_byte_array_as_key

@ -1,5 +1,13 @@
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Deadlock_on_inserts_and_deletes_with_dependents_is_handled_correctly
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 1)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 100)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 3)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Insertion_order_is_preserved(maxBatchSize: 4)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_and_updates_are_batched_correctly
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: False, clientOrder: False)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: False, clientOrder: True)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: True, clientOrder: False)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: False, clientFk: True, clientOrder: True)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: True, clientFk: False, clientOrder: False)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: True, clientFk: False, clientOrder: True)
EntityFrameworkCore.Jet.FunctionalTests.BatchingTest.Inserts_are_batched_correctly(clientPk: True, clientFk: True, clientOrder: False)
@ -2747,6 +2755,41 @@ EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_add_and_remove_entit
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_add_table_splitting_dependent_after_principal
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_enumerate_entity_set
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 0, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 1, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 2, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 3, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 4, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 0)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 1)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 2)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 3)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 4)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_entities_with_generated_PKs(studentCount: 7, courseCount: 7)
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_non_owner_principal_for_owned
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_insert_TPT_dependents_with_identity
EntityFrameworkCore.Jet.FunctionalTests.JetEndToEndTest.Can_remove_multiple_byte_array_as_key

@ -989,10 +989,11 @@ namespace EntityFrameworkCore.Jet.FunctionalTests
Assert.Equal(course.Id, e.CourseId);
Assert.Equal(context.Entry(student).Property(e => e.Id).CurrentValue, entry.Property(e => e.StudentId).CurrentValue);
Assert.Equal(context.Entry(course).Property(e => e.Id).CurrentValue, entry.Property(e => e.CourseId).CurrentValue);
Assert.True(entry.Property(e => e.StudentId).IsTemporary);
Assert.True(entry.Property(e => e.CourseId).IsTemporary);
Assert.True(context.Entry(student).Property(e => e.Id).IsTemporary);
Assert.True(context.Entry(course).Property(e => e.Id).IsTemporary);
//We generate Guid's client side
Assert.False(entry.Property(e => e.StudentId).IsTemporary);
Assert.False(entry.Property(e => e.CourseId).IsTemporary);
Assert.False(context.Entry(student).Property(e => e.Id).IsTemporary);
Assert.False(context.Entry(course).Property(e => e.Id).IsTemporary);
});
context.SaveChanges();

Loading…
Cancel
Save