private object TryFindPrincipal(StateManager stateManager, INavigation navigation, object dependentEntity) { if (navigation.PointsToPrincipal) { return _getterSource.GetAccessor(navigation).GetClrValue(dependentEntity); } // TODO: Perf foreach (var principalEntry in stateManager.StateEntries .Where(e => e.EntityType == navigation.ForeignKey.ReferencedEntityType)) { if (navigation.IsCollection()) { if (_collectionAccessorSource.GetAccessor(navigation).Contains(principalEntry.Entity, dependentEntity)) { return principalEntry.Entity; } } else if (_getterSource.GetAccessor(navigation).GetClrValue(principalEntry.Entity) == dependentEntity) { return principalEntry.Entity; } } return null; }
public QueryContext( [NotNull] IModel model, [NotNull] ILogger logger, [NotNull] StateManager stateManager) { Check.NotNull(model, "model"); Check.NotNull(logger, "logger"); Check.NotNull(stateManager, "stateManager"); _model = model; _logger = logger; _stateManager = stateManager; }
public override bool DetectChanges(StateManager stateManager) { DetectChangesCalled = true; return false; }