コード例 #1
0
ファイル: Repository.cs プロジェクト: bzure/BCF
        protected Entity[] ProcessEntityQueryRequestNonePaged <Entity>(EntityQueryRequest <Entity> QueryRequest) where Entity : IEntity
        {
            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));
                }
            }
            Delegate queryMap = null;

            if (!QueryMapContainer.TryGetValue(typeof(Entity), out queryMap))
            {
                throw new Exception(string.Format("类型:{0}没有在构建静态构造中初始化实体{1}的数据查询映射", this.GetType().Name, typeof(Entity).Name));
            }
            ResultMapDelegate <Entity> qMap = queryMap as ResultMapDelegate <Entity>;
            //查寻的条件
            List <IDataMemberMap> ConditionDataMemberMapList = new List <IDataMemberMap>();

            foreach (IEntityMemberMap map in QueryRequest.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);
                }
            }
            EntityMap <Entity> QueryHandler = this.CreateEntityMap <Entity>(BuildQuerySql(this.TableName, ConditionDataMemberMapList));

            //添加条件参数
            foreach (DataMemberMap DataMemberMap in ConditionDataMemberMapList.Where(m => (m is DataMemberMap)))
            {
                QueryHandler.AddParameter(DataMemberMap);
            }
            return(QueryHandler.SetMap(qMap).AsList().ToArray());
        }
コード例 #2
0
ファイル: Repository.cs プロジェクト: bzure/BCF
        /// <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
ファイル: EntityMemberHelper.cs プロジェクト: bzure/BCF
        public static void AppendMember(this List <IDataMemberMap> DataMemberMapSet, MemberDataMap MemberDataMap, EntityMemberMap EntityMemberMap)
        {
            DataMemberMap DataMemberMap = new DataMemberMap()
            {
                ParameterName = MemberDataMap.DataFieldName + Guid.NewGuid().ToString("N"),
                DataFieldName = MemberDataMap.DataFieldName,
                DataValue     = EntityMemberMap.MemberValue,
                Operator      = EntityMemberMap.Operator,
                LogicSymbol   = EntityMemberMap.LogicSymbol
            };

            DataMemberMapSet.Add(DataMemberMap);
        }