Пример #1
0
        public object DbIdValue()
        {
            IEntityStateHandler stateHandler = new PersistenceStateHandler();
            IPersistenceState   state        = stateHandler.ToHandle(this);

            return(state.DbIdValue(this));
        }
Пример #2
0
        /// <summary>
        /// 实体操作
        /// </summary>
        /// <param name="EntityMap"></param>
        public void ProcessEntityPostRequest <Entity>(Bzure.Common.Data.EntityPostRequest EntityMap) where Entity : IEntity, IPersistenceState
        {
            Dictionary <string, MemberDataMap> MapSet = new Dictionary <string, MemberDataMap>();

            lock (DataMapContainer)
            {
                Dictionary <string, MemberDataMap> MapSetTemp;
                if (DataMapContainer.TryGetValue(typeof(Entity), out MapSetTemp))
                {
                    foreach (KeyValuePair <string, MemberDataMap> kvp in MapSetTemp)
                    {
                        MapSet[kvp.Key] = kvp.Value.Copy();
                    }
                }
                else
                {
                    throw new Exception(string.Format("类型:{0}没有在构建静态构造中初始化实体{1}的数据映射", this.GetType().Name, typeof(Entity).Name));
                }
            }
            switch (EntityMap.Method)
            {
                #region Update
            case Bzure.Common.Data.EntityPostRequest.EntityPostMethod.Update:
                //要更新的字段
                List <IDataMemberMap> FieldDataMemberMapList = new List <IDataMemberMap>();
                foreach (EntityMemberMap map in EntityMap.FieldMap)
                {
                    MemberDataMap MemberDataMap;
                    if (MapSet.TryGetValue(map.MemberName, out MemberDataMap))
                    {
                        FieldDataMemberMapList.AppendMember(MemberDataMap, map);
                    }
                }
                //更新的条件
                List <IDataMemberMap> ConditionDataMemberMapList = new List <IDataMemberMap>();
                foreach (IEntityMemberMap map in EntityMap.ConditionMap)
                {
                    if (map is EntityMemberMap)
                    {
                        EntityMemberMap EntityMemberMap = map as EntityMemberMap;
                        MemberDataMap   MemberDataMap;
                        if (MapSet.TryGetValue(EntityMemberMap.MemberName, out MemberDataMap))
                        {
                            ConditionDataMemberMapList.AppendMember(MemberDataMap, EntityMemberMap);
                        }
                    }
                    else if (map is LogicLinkMap)
                    {
                        ConditionDataMemberMapList.Add(map as LogicLinkMap);
                    }
                }
                StringBuilder updateSql = new StringBuilder();
                updateSql.AppendFormat(UpdateSqlTemplate, this.TableName, BuildUpdateSqlSub(FieldDataMemberMapList), BuildConditonSqlSub(ConditionDataMemberMapList));
                EntityMap <Entity> updateHandler = this.CreateEntityMap <Entity>(updateSql.ToString());
                //添加字段参数
                foreach (DataMemberMap DataMemberMap in FieldDataMemberMapList.Where(m => (m is DataMemberMap)))
                {
                    updateHandler.AddParameter(DataMemberMap);
                }
                //添加条件参数
                foreach (DataMemberMap DataMemberMap in ConditionDataMemberMapList.Where(m => (m is DataMemberMap)))
                {
                    updateHandler.AddParameter(DataMemberMap);
                }
                updateHandler.AsNonQuery();
                if (EntityMap.Entity is IPersistenceState)
                {
                    IPersistenceState persistenceObject = EntityMap.Entity as IPersistenceState;
                    persistenceObject.MarkPersistenceState(true);
                }
                if (EntityMap.Entity is ILastUpdate)
                {
                    ILastUpdate lastUpdateObject = EntityMap.Entity as ILastUpdate;
                    lastUpdateObject.LastTime = DateTime.Now;
                }
                break;

                #endregion
                #region Delete
            case Bzure.Common.Data.EntityPostRequest.EntityPostMethod.Delete:
                //删除的条件
                List <IDataMemberMap> ConditionDataMemberMapListForDelete = new List <IDataMemberMap>();
                foreach (IEntityMemberMap map in EntityMap.ConditionMap)
                {
                    if (map is EntityMemberMap)
                    {
                        EntityMemberMap EntityMemberMap = map as EntityMemberMap;
                        MemberDataMap   MemberDataMap;
                        if (MapSet.TryGetValue(EntityMemberMap.MemberName, out MemberDataMap))
                        {
                            ConditionDataMemberMapListForDelete.AppendMember(MemberDataMap, EntityMemberMap);
                        }
                    }
                    else if (map is LogicLinkMap)
                    {
                        ConditionDataMemberMapListForDelete.Add(map as LogicLinkMap);
                    }
                }
                StringBuilder deleteSql = new StringBuilder();
                deleteSql.AppendFormat(DeleteSqlTemplate, this.TableName, BuildConditonSqlSub(ConditionDataMemberMapListForDelete));
                EntityMap <Entity> deleteHandler = this.CreateEntityMap <Entity>(deleteSql.ToString());

                //添加条件参数
                foreach (DataMemberMap DataMemberMap in ConditionDataMemberMapListForDelete.Where(m => (m is DataMemberMap)))
                {
                    deleteHandler.AddParameter(DataMemberMap);
                }
                deleteHandler.AsNonQuery();
                if (EntityMap.Entity is IPersistenceState)
                {
                    IPersistenceState persistenceObject = EntityMap.Entity as IPersistenceState;
                    persistenceObject.MarkPersistenceState(false);
                }
                break;

                #endregion
                #region Create
            case Bzure.Common.Data.EntityPostRequest.EntityPostMethod.Create:

                //添加的字段
                List <IDataMemberMap> FieldDataMemberMapListForInsert = new List <IDataMemberMap>();
                foreach (EntityMemberMap map in EntityMap.FieldMap)
                {
                    MemberDataMap MemberDataMap;
                    if (MapSet.TryGetValue(map.MemberName, out MemberDataMap))
                    {
                        FieldDataMemberMapListForInsert.AppendMember(MemberDataMap, map);
                    }
                }
                StringBuilder insertSql = new StringBuilder();
                insertSql.AppendFormat(InsertSqlTemplate, this.TableName, BuildInsertSqlSub(FieldDataMemberMapListForInsert));
                EntityMap <Entity> insertHandler = this.CreateEntityMap <Entity>(insertSql.ToString());

                //添加字段参数
                foreach (DataMemberMap DataMemberMap in FieldDataMemberMapListForInsert.Where(m => (m is DataMemberMap)))
                {
                    insertHandler.AddParameter(DataMemberMap);
                }
                insertHandler.AsNonQuery();
                if (EntityMap.Entity is IPersistenceState)
                {
                    IPersistenceState persistenceObject = EntityMap.Entity as IPersistenceState;
                    persistenceObject.MarkPersistenceState(true);
                }
                if (EntityMap.Entity is ILastUpdate)
                {
                    ILastUpdate lastUpdateObject = EntityMap.Entity as ILastUpdate;
                    lastUpdateObject.LastTime = DateTime.Now;
                }
                if (EntityMap.Entity is ICreateTime)
                {
                    ICreateTime createTimeObject = EntityMap.Entity as ICreateTime;
                    createTimeObject.CreateTime = DateTime.Now;
                }
                break;
                #endregion
            }
        }
Пример #3
0
 public static IPersistenceState MarkPersistenceState(this IPersistenceState entity, bool IsPersisted)
 {
     entity.MarkPersistenceState(IsPersisted);
     return(entity);
 }