コード例 #1
0
        public void GrantInitializeEntityDelegate(IEntityInitializer initializer)
        {
            initializer.AcceptInitializeDelegate((Guid id, Guid revision, Guid? author, DateTime created, DateTime updated, IEnumerable <EntityFieldValue> fields) =>
            {
                this.Id       = id;
                this.Revision = revision;
                this.Author   = author;
                this.Created  = created;
                this.Updated  = updated;

                foreach (EntityFieldValue field in fields)
                {
                    if (field == null)
                    {
                        continue;
                    }
                    if (field.Property == null)
                    {
                        throw new Exception(string.Format("property is null for {0}", field.Field.Name));
                    }
                    if (field.Property.SetMethod == null)
                    {
                        throw new MissingFieldSetMethodException(this.GetType(), field.Field.Name);
                    }
                    field.Property.SetValue(this, field.Value);
                }
            });
        }
コード例 #2
0
        protected virtual void OnParameterChanged(object parameter)
        {
            if (Entity != null && IsNew())
            {
                Remove(Entity);
            }
            IEntityInitializer <TEntity, TUnitOfWork> entityInitializer = parameter as IEntityInitializer <TEntity, TUnitOfWork>;

            if (entityInitializer != null)
            {
                Entity = CreateEntity();
                InitializeEntity(entityInitializer);
            }
            else if (parameter is TPrimaryKey)
            {
                this.parameter = parameter;
                Entity         = Repository.Find((TPrimaryKey)parameter);
            }
            else if (parameter == null)
            {
                Entity = CreateEntity();
            }
            else
            {
                Entity = null;
            }
        }
コード例 #3
0
        ///  <summary>
        ///
        ///  </summary>
        ///  <param name="initAtom"></param>
        /// <param name="entityInitializer"></param>
        public void OnInit(DictionaryAtom initAtom, IEntityInitializer entityInitializer)
        {
            EntityInitializer  = entityInitializer;
            InitializationAtom = initAtom;

            var recycleFrequency = initAtom.GetInt("RecycleFrequency");

            Validation.Validate <ArgumentOutOfRangeException>(recycleFrequency > 0);
            Log.DebugFormat("EntityManager initialized with Recycle Frequency of {0}", recycleFrequency);

            _recycler.Timer.Interval = recycleFrequency;

            EventManager.RegisterListener(this, typeof(OnGameInitialize), Instance_OnGameInitialize);
        }
コード例 #4
0
        protected virtual void OnParameterChanged(object parameter)
        {
            IEntityInitializer <TEntity, TUnitOfWork> initializer = parameter as IEntityInitializer <TEntity, TUnitOfWork>;

            if (initializer != null)
            {
                Entity = CreateEntity();
                InitializeEntity(initializer);
            }
            else if (parameter is TPrimaryKey)
            {
                Entity = Repository.Find((TPrimaryKey)parameter);
            }
            else
            {
                Entity = null;
            }
        }
コード例 #5
0
 void InitializeEntity(IEntityInitializer <TEntity, TUnitOfWork> entityInitializer)
 {
     entityInitializer.InitializeEntity(UnitOfWork, Entity);
     this.RaisePropertyChanged(x => x.Entity);
 }
コード例 #6
0
 public void Add(IEntityInitializer <TEntity> property)
 {
     _initializers.Add(property);
 }
コード例 #7
0
 public EntityFactory(ITableConfig table, IEntityInitializer initializer)
 {
     this.Table       = table;
     this.Initializer = initializer;
 }
コード例 #8
0
 public EntityFactory(ITableConfig table, IEntityInitializer initializer, IEntityPopulator populator) : this(table, initializer)
 {
     this.Populator = populator;
 }