博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2
阅读量:7077 次
发布时间:2019-06-28

本文共 1871 字,大约阅读时间需要 6 分钟。

写在前面

今天吃饭回来,突然有一个更好的想法,这里做一下记录。

系列文章

[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2

思路

平时如果要获取电脑上的文件,大都会采用递归的方式,所以就想到这样一个表结构。如图:

id是文件或者文件夹的自增id,pid则是文件或者文件夹所在的文件夹的id,也就是父id。这样设计数据表的好处是,上传文件,创建文件夹,修改文件夹,只需要考虑当前对象就行,不需要再去考虑路径的问题。修改名称就做到只是修改名称就行,不再考虑修改文件夹的名称对找不到文件的问题了。

所以MyFile类如下:

///     /// 我的文件信息    ///     public class MyFile    {        [Key]        public int Id { set; get; }        ///         ///         ///         [Display(Name = "名称")]        [StringLength(1024)]        public string Name { set; get; }        ///         /// 扩展名        ///         [Display(Name = "文件扩展名")]        [StringLength(8)]        public string FileExt { set; get; }        ///         /// 文件或者文件夹图标        ///         [Display(Name = "文件图标")]        [StringLength(32)]        public string FileIcon { set; get; }        ///         /// 文件大小        ///         [Display(Name = "文件大小")]        public int FileSize { set; get; }        ///         /// 文件md5        ///         [Display(Name = "文件MD5")]        [StringLength(32)]        public string FileMd5 { set; get; }        ///         /// 文件修改时间        ///         [Display(Name = "文件修改时间")]        public DateTime ModifyDt { set; get; }        ///         /// 文件上传时间        ///         [Display(Name = "文件上传时间")]        public DateTime CreateDt { set; get; }        ///         /// 是否逻辑删除        ///         [Display(Name = "文件是否删除")]        public bool IsDelete { set; get; }        ///         /// 所属用户        ///         [Display(Name = "文件所属")]        public virtual UserInfo User { set; get; }        ///         /// 是否是文件夹        ///         public bool IsFolder { get; set; }        ///         /// 父id        ///         public int ParentId { set; get; }    }

总结

这样的操作更方便,前段传参的时候,只需要将当前对象的id,pid传到服务端就行。修改文件夹更简单了。出现今天的问题,是在开始这个项目的时候,没有考虑太深入,就是想着想到哪儿就写到哪儿,没有从整体去想细节问题。导致现在,该来该去的。

转载于:https://www.cnblogs.com/wolf-sun/p/4995754.html

你可能感兴趣的文章
mysql LINESTRING ,POINT 类型操作
查看>>
centos7 双网卡双ip内外网设置最小化安装
查看>>
第十次课作业(风险管理、项目收尾、知识产权)
查看>>
win10系统 VMWare12.5虚拟机 Ubuntu 16.04 LTS 开始我的Linux学习
查看>>
数据库 Oracle12c (三):安装与启动
查看>>
如何利用snmp协议发现大型复杂环境的网络拓扑(建议开发自动化工具的朋友可以看一下)...
查看>>
ubuntu 查看apt-get有哪些软件
查看>>
360首曝人工智能研发三大神秘成果
查看>>
海量数据处理 - 十道面试题与十个海量数据处理方法总结
查看>>
linux基础语法
查看>>
Exchange 2013 ServerComponent状态异常处理
查看>>
makefile 判断 64bit or 32 bit
查看>>
创建swap
查看>>
LNMP安装配置
查看>>
马哥2016全新Linux+Python高端运维班第八周作业
查看>>
kvm&pxe
查看>>
二分搜索法 Arrays.binarySearch遇到返回-1的问题
查看>>
环视 Lookaround ---- 正则
查看>>
MySQL事务
查看>>
定义一个空的C++类,编译器自动创建四类成员函数
查看>>