public int UpdateDataInfoObject(IDataInfo dataInfoObject) { FolderInfo obj = dataInfoObject as FolderInfo; if (String.IsNullOrEmpty(obj.Text) == false && obj.Text.Length > DALConfig.MaxTextFieldSize) { obj.Text = obj.Text.Substring(0, DALConfig.MaxTextFieldSize); } if (dataInfoObject == null || obj == null) { return(0); } bool isNew = false; FolderDB dbobj = repository.GetFolderDBWithoutFileInfosByPath(obj.Path); if (dbobj == null) { dbobj = new FolderDB(); isNew = true; } dbobj.ModifyTime = obj.ModifyTime; dbobj.Text = obj.Text; dbobj.Path = obj.Path; dbobj.RTFText = (String.IsNullOrEmpty(obj.RTFText)) ? null : Encoding.UTF8.GetBytes(obj.RTFText); if (isNew) { return(repository.AddFolderDB(dbobj)); } else { return(repository.UpdateFolderDB(dbobj)); } }
/// <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="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> /// 新建一个Folder记录,不包容任何文件 /// </summary> /// <param name="dataInfoObject"></param> /// <returns></returns> public int Create(IDataInfo dataInfoObject) { if (dataInfoObject == null || (dataInfoObject as FolderInfo) == null) { return(0); } FolderDB dbobj = FolderHelper.changeToFolderDB(dataInfoObject as FolderInfo); int result = repository.AddFolderDB(dbobj); //将数据库生成的ID值传回 dataInfoObject.ID = dbobj.ID; return(0); }
public IDataInfo GetDataInfoObjectByPath(string nodePath) { FolderDB dbobj = repository.GetFolderDBWithoutFileInfosByPath(nodePath); ObservableCollection <DBFileInfo> files = repository.GetFileInfosOfFolderDB(nodePath); FolderInfo folderInfo = FolderHelper.changeToFolderInfo(dbobj); if (folderInfo != null) { folderInfo.AttachFiles = files; } return(folderInfo); }
/// <summary> /// 转换为FolderInfo,不理会附属文件集合 /// </summary> /// <param name="dbobj"></param> /// <returns></returns> public static FolderInfo changeToFolderInfo(FolderDB dbobj) { if (dbobj == null) { return(null); } FolderInfo obj = new FolderInfo() { Text = String.IsNullOrEmpty(dbobj.Text) ? "" : dbobj.Text, RTFText = dbobj.RTFText == null ? "" : Encoding.UTF8.GetString(dbobj.RTFText), Path = dbobj.Path, ModifyTime = dbobj.ModifyTime.Value, ID = dbobj.ID }; return(obj); }
/// <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="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> /// 转换为FolderDB对象,不理会附属文件集合 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static FolderDB changeToFolderDB(FolderInfo obj) { if (obj == null) { return(null); } //注意数据库中nvarchar最大允许4000个字符 if (obj.Text != null && obj.Text.Length > DALConfig.MaxTextFieldSize) { obj.Text = obj.Text.Substring(0, DALConfig.MaxTextFieldSize); } FolderDB dbObj = new FolderDB() { ModifyTime = obj.ModifyTime, Path = obj.Path, RTFText = String.IsNullOrEmpty(obj.RTFText) ? null : Encoding.UTF8.GetBytes(obj.RTFText), Text = String.IsNullOrEmpty(obj.Text) ? "" : obj.Text, ID = obj.ID }; return(dbObj); }
/// <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; }