Skip to content

Commit 11d0310

Browse files
committed
Don't throw when attempting to load from a newly Added entity with unknown FK values (#32343)
1 parent 6980d92 commit 11d0310

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

src/EFCore/Internal/EntityFinder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ IQueryable IEntityFinder.Query(INavigation navigation, InternalEntityEntry entry
715715
for (var i = 0; i < values.Length; i++)
716716
{
717717
var property = properties[i];
718-
if (property.IsShadowProperty() && (detached || entry.IsUnknown(property)))
718+
if (property.IsShadowProperty() && (detached || (entry.EntityState != EntityState.Added && entry.IsUnknown(property))))
719719
{
720720
throw new InvalidOperationException(
721721
CoreStrings.CannotLoadDetachedShadow(navigation.Name, entry.EntityType.DisplayName()));

test/EFCore.Specification.Tests/LazyLoadTestBase.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2006,7 +2006,8 @@ public virtual void Lazy_load_many_to_one_reference_to_principal_shadow_fk(
20062006

20072007
if (LazyLoadingEnabled)
20082008
{
2009-
if (state == EntityState.Detached && queryTrackingBehavior == QueryTrackingBehavior.TrackAll)
2009+
if (state == EntityState.Detached && queryTrackingBehavior == QueryTrackingBehavior.TrackAll
2010+
|| state == EntityState.Added && queryTrackingBehavior != QueryTrackingBehavior.TrackAll)
20102011
{
20112012
Assert.Null(child.Parent); // Explicitly detached
20122013
}
@@ -2094,7 +2095,8 @@ public virtual void Lazy_load_one_to_one_reference_to_principal_shadow_fk(
20942095

20952096
if (LazyLoadingEnabled)
20962097
{
2097-
if (state == EntityState.Detached && queryTrackingBehavior == QueryTrackingBehavior.TrackAll)
2098+
if (state == EntityState.Detached && queryTrackingBehavior == QueryTrackingBehavior.TrackAll
2099+
|| state == EntityState.Added && queryTrackingBehavior != QueryTrackingBehavior.TrackAll)
20982100
{
20992101
Assert.Null(single.Parent); // Explicitly detached
21002102
}
@@ -2258,7 +2260,8 @@ public virtual void Lazy_load_many_to_one_reference_to_principal_null_FK_shadow_
22582260
{
22592261
Assert.Null(child.Parent); // Explicitly detached
22602262
}
2261-
else if (queryTrackingBehavior != QueryTrackingBehavior.TrackAll)
2263+
else if (queryTrackingBehavior != QueryTrackingBehavior.TrackAll
2264+
&& state != EntityState.Added)
22622265
{
22632266
Assert.Equal(
22642267
CoreStrings.CannotLoadDetachedShadow("Parent", "ChildShadowFk"),
@@ -2327,7 +2330,8 @@ public virtual void Lazy_load_one_to_one_reference_to_principal_null_FK_shadow_f
23272330
{
23282331
Assert.Null(single.Parent);
23292332
}
2330-
else if (queryTrackingBehavior != QueryTrackingBehavior.TrackAll)
2333+
else if (queryTrackingBehavior != QueryTrackingBehavior.TrackAll
2334+
&& state != EntityState.Added)
23312335
{
23322336
Assert.Equal(
23332337
CoreStrings.CannotLoadDetachedShadow("Parent", "SingleShadowFk"),

0 commit comments

Comments
 (0)