|
|
@ -60,7 +60,7 @@ public class AbpEfCoreNavigationHelper : ITransientDependency |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var foreignKeys = entityEntry.Metadata.GetForeignKeys().ToList(); |
|
|
var foreignKeys = entityEntry.Metadata.GetForeignKeys(); |
|
|
foreach (var foreignKey in foreignKeys) |
|
|
foreach (var foreignKey in foreignKeys) |
|
|
{ |
|
|
{ |
|
|
var principal = stateManager.FindPrincipal(internalEntityEntityEntry, foreignKey); |
|
|
var principal = stateManager.FindPrincipal(internalEntityEntityEntry, foreignKey); |
|
|
@ -75,15 +75,20 @@ public class AbpEfCoreNavigationHelper : ITransientDependency |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
abpEntityEntry.UpdateNavigationEntries(); |
|
|
var navigationEntry = abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is INavigation navigationMetadata && navigationMetadata.ForeignKey == foreignKey) ?? |
|
|
|
|
|
abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is ISkipNavigation skipNavigationMetadata && skipNavigationMetadata.ForeignKey == foreignKey); |
|
|
|
|
|
|
|
|
|
|
|
if (navigationEntry != null && checkEntityEntryState && entityEntry.State == EntityState.Unchanged) |
|
|
|
|
|
{ |
|
|
|
|
|
abpEntityEntry.UpdateNavigation(entityEntry, navigationEntry); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (!abpEntityEntry.IsModified && (!checkEntityEntryState || IsEntityEntryChanged(entityEntry))) |
|
|
if (!abpEntityEntry.IsModified && (!checkEntityEntryState || IsEntityEntryChanged(entityEntry))) |
|
|
{ |
|
|
{ |
|
|
abpEntityEntry.IsModified = true; |
|
|
abpEntityEntry.IsModified = true; |
|
|
DetectChanges(abpEntityEntry.EntityEntry, false); |
|
|
DetectChanges(abpEntityEntry.EntityEntry, false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var navigationEntry = abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is INavigation navigationMetadata && navigationMetadata.ForeignKey == foreignKey) ?? |
|
|
|
|
|
abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is ISkipNavigation skipNavigationMetadata && skipNavigationMetadata.ForeignKey == foreignKey); |
|
|
|
|
|
if (navigationEntry != null && IsEntityEntryChanged(entityEntry)) |
|
|
if (navigationEntry != null && IsEntityEntryChanged(entityEntry)) |
|
|
{ |
|
|
{ |
|
|
navigationEntry.IsModified = true; |
|
|
navigationEntry.IsModified = true; |
|
|
@ -115,15 +120,20 @@ public class AbpEfCoreNavigationHelper : ITransientDependency |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
abpEntityEntry.UpdateNavigationEntries(); |
|
|
var navigationEntry = abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is INavigation navigationMetadata && navigationMetadata.ForeignKey == inverseForeignKey) ?? |
|
|
|
|
|
abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is ISkipNavigation skipNavigationMetadata && skipNavigationMetadata.ForeignKey == inverseForeignKey); |
|
|
|
|
|
|
|
|
|
|
|
if (navigationEntry != null && checkEntityEntryState && entityEntry.State == EntityState.Unchanged) |
|
|
|
|
|
{ |
|
|
|
|
|
abpEntityEntry.UpdateNavigation(entityEntry, navigationEntry); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (!abpEntityEntry.IsModified && (!checkEntityEntryState || IsEntityEntryChanged(entityEntry))) |
|
|
if (!abpEntityEntry.IsModified && (!checkEntityEntryState || IsEntityEntryChanged(entityEntry))) |
|
|
{ |
|
|
{ |
|
|
abpEntityEntry.IsModified = true; |
|
|
abpEntityEntry.IsModified = true; |
|
|
DetectChanges(abpEntityEntry.EntityEntry, false); |
|
|
DetectChanges(abpEntityEntry.EntityEntry, false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var navigationEntry = abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is INavigation navigationMetadata && navigationMetadata.ForeignKey == inverseForeignKey) ?? |
|
|
|
|
|
abpEntityEntry.NavigationEntries.FirstOrDefault(x => x.NavigationEntry.Metadata is ISkipNavigation skipNavigationMetadata && skipNavigationMetadata.ForeignKey == inverseForeignKey); |
|
|
|
|
|
if (navigationEntry != null && (!checkEntityEntryState || IsEntityEntryChanged(entityEntry))) |
|
|
if (navigationEntry != null && (!checkEntityEntryState || IsEntityEntryChanged(entityEntry))) |
|
|
{ |
|
|
{ |
|
|
navigationEntry.IsModified = true; |
|
|
navigationEntry.IsModified = true; |
|
|
|