/// <summary> /// 向数据库中加入一条新记录 /// </summary> /// <param name="dataInfoObject"></param> /// <returns></returns> public int Create(DetailTextDB dbObj) { if (dbObj == null) { return -1; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { context.DetailTextDBs.Add(dbObj); return context.SaveChanges(); } }
/// <summary> /// 向数据库中加入一条新记录 /// </summary> /// <param name="dataInfoObject"></param> /// <returns></returns> public int Create(DetailTextDB dbObj) { if (dbObj == null) { return -1; } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { context.DetailTextDBs.Add(dbObj); Console.WriteLine("详细节点的Create()方法:Text:{0},Path:{1},EFConnectionString:{2}", dbObj.Text, dbObj.Path, EFConnectionString); return context.SaveChanges(); } }
/// <summary> /// 将源数据库中的数据记录移到另一个数据库 /// </summary> /// <param name="SourceRootNodePath"></param> /// <param name="RootNodeType"></param> /// <param name="TargetRootNodePath"></param> public void MoveNodeBetweenDB(String SourceRootNodePath, String TargetRootNodePath) { //bool IsAddToTargetRoot = false; int slashIndex = SourceRootNodePath.LastIndexOf("/", SourceRootNodePath.Length - 2); //源节点文本,即在树中显示的文本 String SourceRootNodeText = SourceRootNodePath.Substring(slashIndex + 1); //if (TargetRootNodePath == "/") //{ // IsAddToTargetRoot = true; //} //处理DetailText节点 var sourceDetailNodes = from node in SourceDbContext.DetailTextDBs.AsNoTracking() where node.Path.StartsWith(SourceRootNodePath) select node; foreach (var detailNode in sourceDetailNodes) { //if (!IsAddToTargetRoot) //{ //如果不是追加到根节点,则源节点路径去掉开头的“/”之后,拼接到目标路径之后 detailNode.Path = TargetRootNodePath + detailNode.Path.Replace(SourceRootNodePath, SourceRootNodeText); //} //else { // //如果是追加到根节点 // detailNode.Path ="/"+ detailNode.Path.Replace(SourceRootNodePath, SourceRootNodeText); //} TargetDbContext.DetailTextDBs.Add(detailNode); } //处理Folder节点,提取其相关联的所有文件 var sourceFolderNodes = from node in SourceDbContext.FolderDBs.Include("DiskFiles").AsNoTracking() where node.Path.StartsWith(SourceRootNodePath) select node; foreach (var folderNode in sourceFolderNodes) { //if (!IsAddToTargetRoot) //{ //源路径去掉开头的“/”之后,拼接到目标路径之后 folderNode.Path = TargetRootNodePath + folderNode.Path.Replace(SourceRootNodePath, SourceRootNodeText); //} //else //{ // folderNode.Path = folderNode.Path.Replace(SourceRootNodePath, SourceRootNodeText); //} TargetDbContext.FolderDBs.Add(folderNode); } //提交更改 TargetDbContext.SaveChanges(); TargetDbContext.Dispose(); //在源数据库中删除相关详细信息节点记录 SourceDbContext.Database.ExecuteSqlCommand("Delete from DetailTextDB where Path like {0}", SourceRootNodePath + "%"); //在源数据库中删除所有文件夹节点相关的记录,涉及三个表,为简单起见,使用EF完成。 var query = from folder in SourceDbContext.FolderDBs where folder.Path.StartsWith(SourceRootNodePath) select folder; foreach (var folder in query) { List <DiskFile> files = folder.DiskFiles.ToList(); foreach (var file in files) { SourceDbContext.Entry(file).State = EntityState.Deleted; } SourceDbContext.FolderDBs.Remove(folder); } SourceDbContext.SaveChanges(); SourceDbContext.Dispose(); }
public int Update(DetailTextDB dbObj) { if (dbObj == null) { return 0; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { DetailTextDB oldObj = context.DetailTextDBs.FirstOrDefault(o => o.ID == dbObj.ID); if (oldObj != null) { //最大的字段长度为3000 if (dbObj.Text.Length >DALConfig.MaxTextFieldSize) { dbObj.Text.Substring(0, DALConfig.MaxTextFieldSize); } //更新数据库 oldObj.ModifyTime = dbObj.ModifyTime; oldObj.Path = dbObj.Path; oldObj.RTFText = dbObj.RTFText; oldObj.Text = dbObj.Text; return context.SaveChanges(); } return 0; } }
/// <summary> /// 更新节点的路径:查找所有路径以oldPath打头的记录,将其路径替换为以newPath打头 /// 有效路径前后应该以“/”包围 /// </summary> /// <param name="oldPath"></param> /// <param name="newPath"></param> public void UpdateNodePaths(String oldPath, String newPath) { using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { var query = from item in context.DetailTextDBs where item.Path.StartsWith(oldPath) select item; foreach (var item in query) { item.Path = item.Path.Replace(oldPath, newPath); } context.SaveChanges(); } }