public void SaveTree(String TreeXml) { if (String.IsNullOrEmpty(TreeXml)) { //创建一棵空树 XElement root = new XElement("root"); TreeXml = root.ToString(); } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { Tree treeObj = context.Trees.FirstOrDefault(); if (treeObj != null) { //更新树 treeObj.maintree = Encoding.UTF8.GetBytes(TreeXml); context.SaveChanges(); } else { //正常情况下应该不会走到这个分支,但仍然写在这里,逻辑就完整了。 treeObj = new Tree(); treeObj.maintree = Encoding.UTF8.GetBytes(TreeXml); context.Trees.Add(treeObj); context.SaveChanges(); } } }
/// <summary> /// 从文件夹节点所关联的文件集合中删除指定的文件 /// </summary> /// <param name="folderDBPath"></param> /// <param name="fileIDs"></param> public void DeleteFilesOfFolderDB(String folderDBPath, List <int> fileIDs) { if (string.IsNullOrEmpty(folderDBPath) || fileIDs == null || fileIDs.Count == 0) { return; } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { FolderDB folder = context.FolderDBs.FirstOrDefault(p => p.Path == folderDBPath); if (folder == null) { return; } foreach (var file in folder.DiskFiles.ToList()) { if (fileIDs.IndexOf(file.ID) != -1) { //保证删除FolderAndFile记录 folder.DiskFiles.Remove(file); //确保DiskFile删除 context.Entry(file).State = EntityState.Deleted; } } context.SaveChanges(); } }
/// <summary> /// 按照Path提取相应文件夹节点所有的文件信息(是FileInfo对象) /// </summary> /// <param name="path"></param> /// <returns></returns> public ObservableCollection <DBFileInfo> GetFileInfosOfFolderDB(String path) { if (String.IsNullOrEmpty(path)) { return(null); } ObservableCollection <DBFileInfo> fileInfos = new ObservableCollection <DBFileInfo>(); using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { var query = from folder in context.FolderDBs where folder.Path == path select folder; FolderDB folderObj = query.FirstOrDefault(); if (folderObj != null) { foreach (var file in folderObj.DiskFiles) { fileInfos.Add(new DBFileInfo() { AddTime = file.AddTime.Value, FilePath = file.FilePath, FileSize = file.FileSize.Value, ID = file.ID }); } } return(fileInfos); } }
/// <summary> /// 删除一个节点及其所有的子节点 /// </summary> /// <param name="dbobj"></param> /// <returns></returns> public int DeleteNodeAndItsChild(String nodePath) { using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { return(context.Database.ExecuteSqlCommand("Delete from DetailTextDB where Path like {0}", nodePath + "%")); } }
public void DeleteAll() { using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { context.Database.ExecuteSqlCommand("delete from DetailTextDB "); } }
/// <summary> /// 提取所有的文件夹型节点(包括其相关联的文件) /// 尽量少用,这将导致占用大量内存 /// </summary> /// <returns></returns> public List <FolderDB> GetAllFolderDBWithItsDiskFile() { using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { var query = from folder in context.FolderDBs.Include("DiskFiles") select folder; return(query.ToList()); } }
/// <summary> /// 依据路径提取文件夹节点的数据,不包括其包容的文件信息, /// 此方法应该与GetFileInfosOfFolderDB()结合起来,向外界返回真正有用的信息 /// </summary> /// <param name="path"></param> /// <returns></returns> public FolderDB GetFolderDBWithoutFileInfosByPath(String path) { if (String.IsNullOrEmpty(path)) { return(null); } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { return(context.FolderDBs.FirstOrDefault(p => p.Path == path)); } }
/// <summary> /// 删除所有文件夹节点记录 /// </summary> public void DeleteAllFolderRecords() { using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { List <FolderDB> folders = context.FolderDBs.ToList(); foreach (var folder in folders) { context.FolderDBs.Remove(folder); } context.SaveChanges(); } }
/// <summary> /// 按照文件ID从数据库中提取文件内容 /// 找不到返回null /// </summary> /// <param name="fileID"></param> /// <returns></returns> public byte[] getFileContent(int fileID) { using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { DiskFile file = context.DiskFiles.FirstOrDefault(f => f.ID == fileID); if (file != null) { return(file.FileContent); } } return(null); }
/// <summary> /// 向数据库中添加一条记录 /// </summary> /// <param name="FolderObj"></param> /// <returns></returns> public int AddFolderDB(FolderDB FolderObj) { if (FolderObj == null) { return 0; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { context.FolderDBs.Add(FolderObj); return context.SaveChanges(); } }
/// <summary> /// 向数据库中添加一条记录 /// </summary> /// <param name="FolderObj"></param> /// <returns></returns> public int AddFolderDB(FolderDB FolderObj) { if (FolderObj == null) { return(0); } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { context.FolderDBs.Add(FolderObj); 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> /// 更新节点的路径:查找所有路径以oldPath打头的记录,将其路径替换为以newPath打头 /// 有效路径前后应该以“/”包围 /// </summary> /// <param name="oldPath"></param> /// <param name="newPath"></param> public void UpdateNodePaths(String oldPath, String newPath) { using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { 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(); } }
/// <summary> /// 按照路径提取DetailTextDB对象 /// </summary> /// <param name="nodePath"></param> /// <returns></returns> public DetailTextDB GetDataInfoObjectByPath(string nodePath) { if (String.IsNullOrEmpty(nodePath)) { return(null); } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { DetailTextDB dbobj = context.DetailTextDBs.FirstOrDefault(o => o.Path == nodePath); if (dbobj != null) { return(dbobj); } } return(null); }
/// <summary> /// 将一个文件加入到文件夹节点的文件集合中 /// </summary> /// <param name="folderDBPath"></param> /// <param name="file"></param> public int AddFileOfFolderDB(String folderDBPath, DiskFile file) { if (string.IsNullOrEmpty(folderDBPath) || file == null) { return(0); } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { FolderDB folder = context.FolderDBs.FirstOrDefault(p => p.Path == folderDBPath); if (folder == null) { return(0); } folder.DiskFiles.Add(file); return(context.SaveChanges()); } }
/// <summary> /// 将一个文件加入到文件夹节点的文件集合中 /// </summary> /// <param name="folderDBPath"></param> /// <param name="file"></param> public int AddFileOfFolderDB(String folderDBPath, DiskFile file) { if (string.IsNullOrEmpty(folderDBPath) || file == null) { return 0; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { FolderDB folder = context.FolderDBs.FirstOrDefault(p => p.Path == folderDBPath); if (folder == null) { return 0; } folder.DiskFiles.Add(file); return context.SaveChanges(); } }
/// <summary> /// 更新文件夹节点的信息 /// </summary> /// <param name="folder"></param> public int UpdateFolderDB(FolderDB folder) { if (folder == null) { return(0); } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { FolderDB folderToModify = context.FolderDBs.FirstOrDefault(p => p.ID == folder.ID); if (folderToModify != null) { folderToModify.ModifyTime = folder.ModifyTime; folderToModify.Text = folder.Text; folderToModify.RTFText = folder.RTFText; return(context.SaveChanges()); } } return(0); }
/// <summary> /// 将多个文件追加到文件夹节点中 /// 如果文件夹节点找不到,或者files为空集合,什么也不干,返回 /// </summary> /// <param name="FolderDBPath"></param> /// <param name="files"></param> public void AddFilesOfFolderDB(String FolderDBPath, List <DiskFile> files) { if (string.IsNullOrEmpty(FolderDBPath) || files == null || files.Count == 0) { return; } using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { FolderDB folder = context.FolderDBs.FirstOrDefault(p => p.Path == FolderDBPath); if (folder == null) { return; } foreach (var file in files) { folder.DiskFiles.Add(file); } context.SaveChanges(); } }
/// <summary> /// 将多个文件追加到文件夹节点中 /// 如果文件夹节点找不到,或者files为空集合,什么也不干,返回 /// </summary> /// <param name="FolderDBPath"></param> /// <param name="files"></param> public void AddFilesOfFolderDB(String FolderDBPath, List<DiskFile> files) { if (string.IsNullOrEmpty(FolderDBPath) || files == null || files.Count == 0) { return; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { FolderDB folder = context.FolderDBs.FirstOrDefault(p => p.Path == FolderDBPath); if (folder == null) { return; } foreach (var file in files) { folder.DiskFiles.Add(file); } context.SaveChanges(); } }
/// <summary> /// 接照路径删除指定的文件夹节点记录,其子节点数据不动(因为在更换节点 /// 类型时,需要删除自己,但子节点是不能删除的) /// </summary> /// <param name="path"></param> /// <returns></returns> public int DeleteFolderDB(String path) { using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { var query = from folder in context.FolderDBs where folder.Path == path select folder; foreach (var folder in query) { List <DiskFile> files = folder.DiskFiles.ToList(); foreach (var file in files) { context.Entry(file).State = EntityState.Deleted; } context.FolderDBs.Remove(folder); } return(context.SaveChanges()); } }
/// <summary> /// 从数据库中提取树,如果找不到,则自动创建一棵空树保存到数据库中 /// </summary> /// <returns></returns> public String GetTreeFromDB() { String TreeXml = ""; using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { Tree treeObj = context.Trees.FirstOrDefault(); if (treeObj != null) { TreeXml = Encoding.UTF8.GetString(treeObj.maintree); } else { //创建一棵空树 XElement root = new XElement("root"); TreeXml = root.ToString(); treeObj = new Tree(); treeObj.maintree = Encoding.UTF8.GetBytes(TreeXml); context.Trees.Add(treeObj); context.SaveChanges(); } } return(TreeXml); }
/// <summary> /// 从数据库中提取树,如果找不到,则自动创建一棵空树保存到数据库中 /// </summary> /// <returns></returns> public String GetTreeFromDB() { String TreeXml = ""; using (InfocenterEntities context = new InfocenterEntities(EFConnectionString)) { Tree treeObj = context.Trees.FirstOrDefault(); if (treeObj != null) { TreeXml = Encoding.UTF8.GetString(treeObj.maintree); } else { //创建一棵空树 XElement root = new XElement("root"); TreeXml = root.ToString(); treeObj = new Tree(); treeObj.maintree = Encoding.UTF8.GetBytes(TreeXml); context.Trees.Add(treeObj); context.SaveChanges(); } } return TreeXml; }
/// <summary> /// 依据路径提取文件夹节点的数据,不包括其包容的文件信息, /// 此方法应该与GetFileInfosOfFolderDB()结合起来,向外界返回真正有用的信息 /// </summary> /// <param name="path"></param> /// <returns></returns> public FolderDB GetFolderDBWithoutFileInfosByPath(String path) { if (String.IsNullOrEmpty(path)) { return null; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { return context.FolderDBs.FirstOrDefault(p => p.Path == path); } }
/// <summary> /// 从文件夹节点所关联的文件集合中删除指定的文件 /// </summary> /// <param name="folderDBPath"></param> /// <param name="fileIDs"></param> public void DeleteFilesOfFolderDB(String folderDBPath, List<int> fileIDs) { if (string.IsNullOrEmpty(folderDBPath) || fileIDs == null || fileIDs.Count == 0) { return; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { FolderDB folder = context.FolderDBs.FirstOrDefault(p => p.Path == folderDBPath); if (folder == null) { return; } foreach (var file in folder.DiskFiles.ToList()) { if (fileIDs.IndexOf(file.ID) != -1) { //保证删除FolderAndFile记录 folder.DiskFiles.Remove(file); //确保DiskFile删除 context.Entry(file).State = EntityState.Deleted; } } context.SaveChanges(); } }
/// <summary> /// 删除所有文件夹节点记录 /// </summary> public void DeleteAllFolderRecords() { using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { List<FolderDB> folders = context.FolderDBs.ToList(); foreach (var folder in folders) { context.FolderDBs.Remove(folder); } context.SaveChanges(); } }
/// <summary> /// 按照路径删除FolderDB记录,如果它还有子记录,一并删除 /// </summary> /// <param name="path"></param> public int DeleteFolderDBAndItsChildByPath(String path) { using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { var query = from folder in context.FolderDBs where folder.Path.StartsWith(path) select folder; foreach (var folder in query) { List<DiskFile> files = folder.DiskFiles.ToList(); foreach (var file in files) { context.Entry(file).State = EntityState.Deleted; } context.FolderDBs.Remove(folder); } return context.SaveChanges(); } }
/// <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.FolderDBs where item.Path.StartsWith(oldPath) select item; foreach (var item in query) { item.Path = item.Path.Replace(oldPath, newPath); } context.SaveChanges(); } }
/// <summary> /// 按照Path提取相应文件夹节点所有的文件信息(是FileInfo对象) /// </summary> /// <param name="path"></param> /// <returns></returns> public ObservableCollection<DBFileInfo> GetFileInfosOfFolderDB(String path) { if (String.IsNullOrEmpty(path)) { return null; } ObservableCollection<DBFileInfo> fileInfos = new ObservableCollection<DBFileInfo>(); using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { var query = from folder in context.FolderDBs where folder.Path == path select folder; FolderDB folderObj = query.FirstOrDefault(); if (folderObj != null) { foreach (var file in folderObj.DiskFiles) { fileInfos.Add(new DBFileInfo() { AddTime = file.AddTime.Value, FilePath = file.FilePath, FileSize = file.FileSize.Value, ID = file.ID }); } } return fileInfos; } }
/// <summary> /// 按照文件ID从数据库中提取文件内容 /// 找不到返回null /// </summary> /// <param name="fileID"></param> /// <returns></returns> public byte[] getFileContent(int fileID) { using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { DiskFile file = context.DiskFiles.FirstOrDefault(f => f.ID == fileID); if (file != null) { return file.FileContent; } } return null; }
/// <summary> /// 提取所有的文件夹型节点(不包括其相关联的文件) /// /// </summary> /// <returns></returns> public List<FolderDB> GetAllFolderDBWithoutItsDiskFile() { using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { var query = from folder in context.FolderDBs select folder; return query.ToList(); } }
/// <summary> /// 更新文件夹节点的信息 /// </summary> /// <param name="folder"></param> public int UpdateFolderDB(FolderDB folder) { if (folder == null) { return 0; } using (InfocenterEntities context = new InfocenterEntities(DALConfig.ConnectString)) { FolderDB folderToModify = context.FolderDBs.FirstOrDefault(p => p.ID == folder.ID); if (folderToModify != null) { folderToModify.ModifyTime = folder.ModifyTime; folderToModify.Text = folder.Text; folderToModify.RTFText = folder.RTFText; return context.SaveChanges(); } } return 0; }