コード例 #1
0
        public void SaveSettingToMongoDB(List <InfoSetting> listInfo)
        {
            MongoDatabase db = MongoDBConn.GetDatabase("WcfLogServer");//数据库名字

            if (db != null)
            {
                //存入mongodb,保存前进行查询
                foreach (InfoSetting item in listInfo)
                {
                    //Console.WriteLine("----------------------------------------------------------");
                    //Console.WriteLine("InfoSetting \r\nCollectionName:{0} \r\nIndexName:{1} \r\nIsShard:{2} \r\nShardSpan:{3}", item.CollectionName, item.IndexName, item.IsShard, item.ShardSpan);
                    string collectionName = "InfoSetting";
                    try
                    {
                        MongoCollection <InfoSetting> categories = db.GetCollection <InfoSetting>(collectionName);//列表名字
                        InfoSetting info = categories.FindOne(new QueryComplete(new BsonDocument("CollectionName", item.CollectionName)));
                        if (info != null)
                        {
                            info.IndexName  = item.IndexName;
                            info.ModifyTime = DateTime.Now;
                            categories.Save <InfoSetting>(info);//更新
                        }
                        else
                        {
                            item.ModifyTime = DateTime.Now;
                            item.CreateTime = DateTime.Now;
                            categories.Insert <InfoSetting>(item);//添加
                        }
                    }
                    catch (Exception ex)
                    {
                        LogService.Write("库:WcfLogServer 表:" + collectionName + " 出现异常." + ex.ToString());
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 保存日志异常配置信息
        /// </summary>
        /// <param name="logInfo"></param>
        public void SaveSetting(List <AbstractLogInfo> logInfo)
        {
            try
            {
                // 库名:WcfLogServer 表名 InfoSetting
                // 读出属性,做索引,分库处理
                // 保存到数据库中去,采用批量方式
                List <InfoSetting> listInfo = new List <InfoSetting>();
                InfoSetting        infoSetting;
                string             temp;
                logInfo.ForEach(log =>
                {
                    Type typeLog    = log.GetType();
                    string typeName = typeLog.Name;
                    if (!ConfigProvider.Common.DicInfoSetting.Contains(typeName)) //判断索引是否已经创建过
                    {
                        ConfigProvider.Common.DicInfoSetting.Add(typeName);       //添加到已创建索引列表中

                        infoSetting         = new InfoSetting();
                        string indexes      = "";
                        ShardSpan shardSpan = ShardSpan.Month;
                        bool isShard        = false;
                        bool isAdd          = true;
                        listInfo.ForEach(info =>
                        {
                            if (info.CollectionName == typeName)
                            {
                                isAdd = false;
                            }
                        });
                        if (isAdd)
                        {
                            //通过反射获取属性
                            typeLog.GetProperties().ToList().ForEach(property =>
                            {
                                property.GetCustomAttributes(typeof(PersistenceColumnAttribute), true).Cast <PersistenceColumnAttribute>().ToList().ForEach(pca =>
                                {
                                    if (pca.IsIndex)
                                    {
                                        temp = property.Name + ",";
                                        if (indexes.IndexOf(temp) == -1)
                                        {
                                            indexes += property.Name + ",";
                                        }
                                    }
                                    if (pca.IsShard)
                                    {
                                        isShard   = true;
                                        shardSpan = pca.ShardSpan;
                                    }
                                });
                            });
                            infoSetting.CollectionName = typeName;
                            infoSetting.IndexName      = indexes.TrimEnd(',');
                            infoSetting.IsShard        = isShard;
                            infoSetting.ShardSpan      = shardSpan;
                            listInfo.Add(infoSetting);
                        }
                    }
                });

                SaveSettingToMongoDB(listInfo);
            }
            catch (Exception ex)
            {
                LogService.Write(ex);
            }
        }
コード例 #3
0
ファイル: NoSqlMongoDB.cs プロジェクト: gofixiao/HYPDM_Pro
        /// <summary>
        /// 保存日志异常配置信息
        /// </summary>
        /// <param name="logInfo"></param>
        public void SaveSetting(List<AbstractLogInfo> logInfo)
        {
            try
            {
                // 库名:WcfLogServer 表名 InfoSetting
                // 读出属性,做索引,分库处理
                // 保存到数据库中去,采用批量方式
                List<InfoSetting> listInfo = new List<InfoSetting>();
                InfoSetting infoSetting;
                string temp;
                logInfo.ForEach(log =>
                {
                    Type typeLog = log.GetType();
                    string typeName = typeLog.Name;
                    if (!ConfigProvider.Common.DicInfoSetting.Contains(typeName))//判断索引是否已经创建过
                    {
                        ConfigProvider.Common.DicInfoSetting.Add(typeName);//添加到已创建索引列表中

                        infoSetting = new InfoSetting();
                        string indexes = "";
                        ShardSpan shardSpan = ShardSpan.Month;
                        bool isShard = false;
                        bool isAdd = true;
                        listInfo.ForEach(info =>
                        {
                            if (info.CollectionName == typeName)
                            {
                                isAdd = false;
                            }
                        });
                        if (isAdd)
                        {
                            //通过反射获取属性
                            typeLog.GetProperties().ToList().ForEach(property =>
                            {
                                property.GetCustomAttributes(typeof(PersistenceColumnAttribute), true).Cast<PersistenceColumnAttribute>().ToList().ForEach(pca =>
                                {
                                    if (pca.IsIndex)
                                    {
                                        temp = property.Name + ",";
                                        if (indexes.IndexOf(temp) == -1)
                                        {
                                            indexes += property.Name + ",";
                                        }
                                    }
                                    if (pca.IsShard)
                                    {
                                        isShard = true;
                                        shardSpan = pca.ShardSpan;
                                    }
                                });
                            });
                            infoSetting.CollectionName = typeName;
                            infoSetting.IndexName = indexes.TrimEnd(',');
                            infoSetting.IsShard = isShard;
                            infoSetting.ShardSpan = shardSpan;
                            listInfo.Add(infoSetting);
                        }
                    }
                });

                SaveSettingToMongoDB(listInfo);
            }
            catch (Exception ex)
            {
                LogService.Write(ex);
            }
        }