Пример #1
0
        internal void CallBack <TProperty>(TEntity Entity, EditedEntity <TEntity, TProperty> Edited)
        {
            IEntityRelationForeignManager <TEntity> EntityRelationForeignManager = entityRelationForeignManagers[GetEntityRelation(Edited.Property)];

            ForeignStatus foreignStatus = EntityRelationForeignManager.GetForeignStatus(Entity, Edited);

            EntityRelationForeignManager.UpdateOnEdit(Entity, Edited, foreignStatus);
        }
Пример #2
0
        private void AddInternalUpdateAllForeign(TEntity Entity, Dictionary <IEntityRelationForeignManager <TEntity>, ForeignStatus> ForeignStatuses)
        {
            foreach (KeyValuePair <IEntityRelationForeignManager <TEntity>, ForeignStatus> pair in ForeignStatuses)
            {
                ForeignStatus foreignStatus = pair.Value;
                IEntityRelationForeignManager <TEntity> entityRelationForeignManager = pair.Key;

                entityRelationForeignManager.UpdateOnAdd(Entity, foreignStatus);
            }
        }
Пример #3
0
        private Dictionary <IEntityRelationForeignManager <TEntity>, ForeignStatus> GetAllForeignStatuses(TEntity Entity, bool BearkIfFindInvalid = true)
        {
            Dictionary <IEntityRelationForeignManager <TEntity>, ForeignStatus> foreignStatuses = new Dictionary <IEntityRelationForeignManager <TEntity>, ForeignStatus>();

            foreach (IEntityRelationForeignManager <TEntity> entityRelationForeignManager in entityRelationForeignManagers.Values)
            {
                ForeignStatus foreignStatus = entityRelationForeignManager.GetForeignStatus(Entity);

                foreignStatuses.Add(entityRelationForeignManager, foreignStatus);

                if ((foreignStatus & ForeignStatus.Invalid) == ForeignStatus.Invalid)
                {
                    if (BearkIfFindInvalid)
                    {
                        return(foreignStatuses);
                    }
                }
            }

            return(foreignStatuses);
        }
Пример #4
0
        private void EditInternal <TProperty>(TEntity Entity, EditedEntity <TEntity, TProperty> Edited, ForeignStatus ForeignStatus)
        {
            Entity.State = Entity.State.BeginEdit();

            if (Edited.EntityRelationForeignManager == null)
            {
                Entity.Data.Set(Edited.Property, Edited.Value.New);

                if (Edited.TrakMode.IsTrack())
                {
                    EntityChangeTracker.Track(Entity, Edited.Property);
                }
                else if (Edited.TrakMode.IsUnTrack())
                {
                    EntityChangeTracker.UnTrack(Entity, Edited.Property);
                }

                Entity.OnPropertyChanged(Edited.Property.Name);
            }
            else
            {
                Edited.EntityRelationForeignManager.UpdateOnEdit(Entity, Edited, ForeignStatus);
            }

            Entity.State = Entity.State.EndEdit();

            EditInternalNotifyAllRelated(Entity);
        }
Пример #5
0
        private void CanEditForeign <TProperty>(TEntity Entity, EditedEntity <TEntity, TProperty> Edited, out ForeignStatus ForeignStatus)
        {
            ForeignStatus = GetForeignStatus(Entity, Edited);

            if (!ForeignStatus.IsValid())
            {
                throw new EntitySetCanEditException($"{Entity} Property {Edited.Property.Name} {ForeignStatus}");
            }
        }
Пример #6
0
        private void CanEdit <TProperty>(TEntity Entity, EditedEntity <TEntity, TProperty> Edited, out ForeignStatus ForeignStatus)
        {
            if (!typeof(TEntity).Contains(Edited.Property))
            {
                throw new CriticalException($"{Entity.GetType()} Not Contains Property {Edited.Property.Name}");
            }

            if (Edited.Property == Key)
            {
                throw new EntitySetEditException($"Can't Edit Key Property, {Entity.GetType()}.{Edited.Property.Name}");
            }

            ForeignStatus = ForeignStatus.Unkhown;

            if (Edited.EntityRelationForeignManager != null)
            {
                CanEditForeign(Entity, Edited, out ForeignStatus);
            }
        }