mvc5 ef6 mysql_[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2
写在前面
今天吃饭回来,突然有一个更好的想法,这里做一下记录。
系列文章
[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2
思路
平时如果要获取电脑上的文件,大都会采用递归的方式,所以就想到这样一个表结构。如图:
id是文件或者文件夹的自增id,pid则是文件或者文件夹所在的文件夹的id,也就是父id。这样设计数据表的好处是,上传文件,创建文件夹,修改文件夹,只需要考虑当前对象就行,不需要再去考虑路径的问题。修改名称就做到只是修改名称就行,不再考虑修改文件夹的名称对找不到文件的问题了。
所以MyFile类如下:
///
///我的文件信息///
public classMyFile
{
[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传到服务端就行。修改文件夹更简单了。出现今天的问题,是在开始这个项目的时候,没有考虑太深入,就是想着想到哪儿就写到哪儿,没有从整体去想细节问题。导致现在,该来该去的。
mvc5 ef6 mysql_[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2相关推荐
- [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3
写在前面 本篇文章将新建文件夹的逻辑也进行一下修改. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5 ...
- [实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2
写在前面 上篇文章修改文件上传的逻辑,这篇修改下文件下载的逻辑. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实 ...
- [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
写在前面 上篇文章简单介绍了项目的结构,这篇文章将实现用户的注册.当然关于漂亮的ui,这在追后再去添加了,先将功能实现.也许代码中有不合适的地方,也只有在之后慢慢去优化了. 系列文章 [EF]vs15 ...
- [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表
写在前面 上篇文章实现了文档列表,所以实现视频列表就依葫芦画瓢就行了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ...
- [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件
写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...
- 上传头像mysql_上传头像 - MVC5+EF6+MySql企业网盘实战 - 爱整理
写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 示例 这里采用最简单 ...
- edb mysql_通过MTK迁移Mysql到EDB实战指南
1.1 迁移准备 下图是Migration toolkit(MTK)可使用的迁移功能 1 查看一下迁移源数据库testdb信息,共三张表 2 到enterprisedb官网Downloads页面下载m ...
- SQL注入实战————1、MySQL手工注入实战
无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家 ...
- 开发人员MySQL调优-实战篇2-让SQL使用索引详解
2019独角兽企业重金招聘Python工程师标准>>> 建议先看看开发人员MySQL调优-实战篇0 让执行的SQL使用索引 虽然DBA给我们建了很多索引,但没有经验的开发人员往往只看 ...
最新文章
- 北大高材生割美国韭菜被FBI通缉?本人回应予以否认
- h5网页水印SDK的实现代码示例
- plsql developer 10注册码----亲测截止2017年5月6可用
- java reflection list_Java Reflection(九):泛型
- 一个简单判等例子的深度分析
- 分享:手机应用存5个严重的信息安全隐患你晓得吗?
- 产品创新必备方法论:国外系统的产品创新
- Oracle 原理:UNDO表空间
- 值得推荐的微软技术公众号推荐
- 论HTML5 Audio 标签歌词同步的实现
- 成功没有捷径python_成功,大部分时候并没有捷径
- [设计模式-结构型]组合(Composite )
- wordpress rest api 漏洞又来了CVE-2017-5487 上次是修改文章内容这次可是泄露用户数据...
- MySQL 8.0.29安装版安装教程
- 图灵科普数学宝藏书单|购书狂欢618倒计时,这份书单闭眼入
- 界面原型创建工具Axure使用教程
- php实现推箱子游戏,C语言实现推箱子游戏的代码示例
- 快门速度、光圈、ISO(感光度)
- Linux软件漏洞修复指南
- 矩阵分析L3内积空间
热门文章
- 如何实现把固定内容自动写入excel_Excel如何把修改记录自动写入批注?
- 66.javac 编译与 JIT 编译\编译过程\javac 编译\词法、语法分析\填充符号表\语义分析\字节码生成\JIT 编译
- Scala方法定义,方法和函数的区别,将方法转换成函数
- Linux下apache服务器安装,sqlite安装,apache启动,关闭,重启,编写cig程序进行测试,浏览器访问cig程序
- Linux redhat下安装jdk-6u45-linux-x64.bin
- Kettle使用_31 CSV文件输入跳过前几(首)行之过滤记录
- python代码执行过程记录_[原创]IDAPython+OdbgScript动态获取程序执行流程
- 商品品牌信息的增删改查操作步骤_javaweb09-Servlet增删改查
- PyTorch模型读写、参数初始化、Finetune
- 深度学习--简述卷积层如何检测物体边缘原理