protected TEntity FindReferenced(int key, TEntity entity, bool fallback) { var referenced = ReferencedGroup.FindEntity(key); if (referenced == null) { if (fallback) { var manager = entity.Manager; // TODO: If loaded entity is to be deleted load all components as well referenced = (manager.FindEntity(key) ?? manager.LoadEntity(key)) as TEntity; } else if (!ReferencedGroup.IsLoading) { throw new InvalidOperationException( $"Couldn't find entity '{key}' in '{ReferencedGroup.Name}' referenced from entity '{entity.Id}'" + $" in '{ReferencingGroup.Name}' through '{Name}'"); } } return(referenced); }
public bool ContainsEntity(TEntity entity) => KeyValueGetter.TryGetKey(entity, new IPropertyValueChange[0], getOldValue: false, out var referencedId) && ReferencedGroup.ContainsEntity(referencedId);