Ejemplo n.º 1
0
 /// <summary>
 /// 保存增量为Xml文件
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="path">路径</param>
 /// <returns></returns>
 public static bool SaveVariable(this XmlDBManager manager, string path)
 {
     try
     {
         using (var newDb = XmlDB.Create(path))
         {
             var version = MapConfig.Instance.Version;
             version++;
             foreach (var table in manager.DB.Tables)
             {
                 var newTable = XmlTable.Create(table.Name);
                 var entities = table.Entities.Where(o => o.EntityState != EntityState.None);
                 if (entities.Any())
                 {
                     //更新版本号
                     entities.ToList().ForEach(o => o.Version = version);
                     newTable.AddRange(entities);
                     newDb.AddTable(newTable);
                 }
             }
             InsertCadVersion(version, newDb);
             newDb.Save();
             //保存版本号
             SaveVersion(version);
             return(true);
         }
     }
     catch (Exception ex)
     {
         LogManager.Instance.Error(ex);
         return(false);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 合并增量数据
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="otherManager">另一个XmlDBManager的Insert状态数据</param>
        /// <returns></returns>
        public static List <DBEntity> MergeIncrement(this XmlDBManager manager, XmlDBManager otherManager)
        {
            var duplicateRecord = new List <DBEntity>();

            try
            {
                foreach (var table in otherManager.DB.Tables)
                {
                    //新增的数据
                    var entities = table.Entities.Where(o => o.EntityState != EntityState.None);
                    foreach (var entity in entities)
                    {
                        var g3e_fid = entity.GetValue <long>("G3E_FID");
                        if (manager.Has(entity.GetType()))
                        {
                            var dbentity = manager.GetEntity(entity.GetType(),
                                                             o => o.GetValue <long>("G3E_FID") == g3e_fid);
                            //判断实体是否已存在
                            if (dbentity == null)
                            {
                                manager.Insert(entity);
                            }
                            else
                            {
                                if (!duplicateRecord.Contains(entity))
                                {
                                    duplicateRecord.Add(entity);
                                }
                                manager.Update(entity);
                            }
                        }
                        else
                        {
                            manager.Insert(entity);
                        }
                    }
                    //更新update状态数据
                    var updateEntities = table.Entities.Where(o => o.EntityState == EntityState.Update);
                    foreach (var uentity in updateEntities)
                    {
                        manager.Update(uentity);
                        if (!duplicateRecord.Contains(uentity))
                        {
                            duplicateRecord.Add(uentity);
                        }
                    }
                }
                return(duplicateRecord);
            }
            catch (Exception ex)
            {
                LogManager.Instance.Error(ex);
                return(duplicateRecord);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 保存为Xml文件
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="path">路径</param>
 /// <param name="password"> </param>
 /// <returns></returns>
 public static bool Save(this XmlDBManager manager, string path, string password)
 {
     try
     {
         manager.DB.
         Save(path, password);
         return(true);
     }
     catch (Exception ex)
     {
         LogManager.Instance.Error(ex);
         return(false);
         //throw;
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 合并
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="otherManager">另一个XmlDBManager</param>
 /// <returns></returns>
 public static bool Merge(this XmlDBManager manager, XmlDBManager otherManager)
 {
     try
     {
         foreach (var table in otherManager.DB.Tables)
         {
             manager.InsertBulk(table.Entities);
         }
         return(true);
     }
     catch (Exception ex)
     {
         LogManager.Instance.Error(ex);
         return(false);
     }
 }
Ejemplo n.º 5
0
 public static IList <XmlTable> GetInerementTables(this XmlDBManager manager)
 {
     return(manager.DB.Tables);
 }
Ejemplo n.º 6
0
 public static bool Save(this XmlDBManager manager, string path)
 {
     return(manager.Save(path, string.Empty));
 }