Ejemplo n.º 1
0
        /// <summary>
        /// 一行一行处理更新或者插入数据
        /// </summary>
        /// <param name="primaryKeys">主键列名</param>
        /// <param name="collectionName">表名</param>
        /// <param name="dtb">数据</param>
        /// <param name="errorMsg">错误信息</param>
        /// <returns>是否成功</returns>
        public bool UpdateOrInsertRowByRow(string primaryKeys, string collectionName, SqlDataReader dataReader, out string errorMsg)
        {
            errorMsg = string.Empty;
            if (dataReader == null || !dataReader.HasRows)
            {
                return(true);
            }

            MongoCollection collection = GetMongoCollection(collectionName);

            while (dataReader.Read())
            {
                IMongoQuery query = GetQuery(primaryKeys, dataReader);
                MongoDB.Driver.Builders.UpdateBuilder update = new MongoDB.Driver.Builders.UpdateBuilder();

                for (int i = 0; i < dataReader.FieldCount; i++)
                {
                    BsonValue bsonValue = BsonValue.Create(dataReader[i]);
                    update.AddToSet(dataReader.GetName(i), bsonValue);
                }
                WriteConcernResult result = collection.Update(query, update, UpdateFlags.Upsert);
                if (!result.Ok)
                {
                    errorMsg = result.ErrorMessage;
                    return(false);
                }
            }
            dataReader.Close();
            dataReader.Dispose();
            return(true);
        }
 public void SaveCounterExtData(int parentCategoryId, int parentCounterId,
                                CounterExtDataInfo counterExtDataInfo)
 {
     MongoCollection<BsonDocument> items = Database.GetCollection("countersInfo");
     IMongoQuery q = Query.And(Query.EQ("id", parentCategoryId));
     UpdateBuilder u = new UpdateBuilder();
     if (counterExtDataInfo != null)
         u.AddToSet("c" + parentCounterId + ".extDatas",
                    new BsonDocument {{"name", counterExtDataInfo.Name}, {"id", counterExtDataInfo.Id}});
     items.Update(q, u, UpdateFlags.Upsert, SafeMode.True);
 }
 public void SaveCounterName(int parentCategoryId, CounterNameInfo nameInfo)
 {
     MongoCollection<BsonDocument> items = Database.GetCollection("countersInfo");
     IMongoQuery q = Query.EQ("id", parentCategoryId);
     UpdateBuilder u = new UpdateBuilder();
     u.AddToSet("counters", new BsonDocument {{"name", nameInfo.Name}, {"id", nameInfo.Id}});
     u.Set("c" + nameInfo.Id, new BsonDocument
                                  {
                                      {"sources", new BsonArray()},
                                      {"instances", new BsonArray()},
                                      {"extDatas", new BsonArray()}
                                  });
     items.Update(q, u, UpdateFlags.Upsert, SafeMode.True);
 }