Skip to content

Commit 1cdd769

Browse files
committed
Don't throw on missing store generated values in data seeds.
Fixes #14161
1 parent 74d1c6a commit 1cdd769

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

src/EFCore/Infrastructure/ModelValidator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,8 @@ protected virtual void ValidateData([NotNull] IModel model)
568568
|| value == null)
569569
{
570570
if (!property.IsNullable
571-
&& (!property.RequiresValueGenerator()
571+
&& ((!property.RequiresValueGenerator()
572+
&& (property.ValueGenerated & ValueGenerated.OnAdd) == 0)
572573
|| property.IsKey()))
573574
{
574575
throw new InvalidOperationException(CoreStrings.SeedDatumMissingValue(entityType.DisplayName(), property.Name));

test/EFCore.Tests/Infrastructure/ModelValidatorTest.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,13 +752,33 @@ public virtual void Detects_missing_required_values_in_seeds()
752752
modelBuilder.Model);
753753
}
754754

755+
[Fact]
756+
public virtual void Passes_on_missing_required_store_generated_values_in_seeds()
757+
{
758+
var modelBuilder = CreateModelBuilder();
759+
modelBuilder.Entity<A>(
760+
e =>
761+
{
762+
e.Property(a => a.P0).IsRequired().ValueGeneratedOnAddOrUpdate();
763+
e.HasData(
764+
new A
765+
{
766+
Id = 1
767+
});
768+
});
769+
770+
Validate(modelBuilder.Model);
771+
}
772+
755773
[Fact]
756774
public virtual void Detects_missing_key_values_in_seeds()
757775
{
758776
var entity = new NonSignedIntegerKeyEntity();
759777
var modelBuilder = CreateModelBuilder();
760778
modelBuilder.Entity<NonSignedIntegerKeyEntity>(e => e.HasData(entity));
761779

780+
Assert.Equal(ValueGenerated.OnAdd,
781+
modelBuilder.Model.FindEntityType(typeof(NonSignedIntegerKeyEntity)).FindProperty(nameof(NonSignedIntegerKeyEntity.Id)).ValueGenerated);
762782
VerifyError(
763783
CoreStrings.SeedDatumDefaultValue(nameof(NonSignedIntegerKeyEntity), nameof(NonSignedIntegerKeyEntity.Id), entity.Id),
764784
modelBuilder.Model);

0 commit comments

Comments
 (0)