写在前面

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

系列文章

[实战]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相关推荐

  1. [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3

    写在前面 本篇文章将新建文件夹的逻辑也进行一下修改. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5 ...

  2. [实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2

    写在前面 上篇文章修改文件上传的逻辑,这篇修改下文件下载的逻辑. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实 ...

  3. [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册

    写在前面 上篇文章简单介绍了项目的结构,这篇文章将实现用户的注册.当然关于漂亮的ui,这在追后再去添加了,先将功能实现.也许代码中有不合适的地方,也只有在之后慢慢去优化了. 系列文章 [EF]vs15 ...

  4. [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表

    写在前面 上篇文章实现了文档列表,所以实现视频列表就依葫芦画瓢就行了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ...

  5. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

  6. 上传头像mysql_上传头像 - MVC5+EF6+MySql企业网盘实战 - 爱整理

    写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 示例 这里采用最简单 ...

  7. edb mysql_通过MTK迁移Mysql到EDB实战指南

    1.1 迁移准备 下图是Migration toolkit(MTK)可使用的迁移功能 1 查看一下迁移源数据库testdb信息,共三张表 2 到enterprisedb官网Downloads页面下载m ...

  8. SQL注入实战————1、MySQL手工注入实战

    无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家 ...

  9. 开发人员MySQL调优-实战篇2-让SQL使用索引详解

    2019独角兽企业重金招聘Python工程师标准>>> 建议先看看开发人员MySQL调优-实战篇0 让执行的SQL使用索引 虽然DBA给我们建了很多索引,但没有经验的开发人员往往只看 ...

最新文章

  1. 北大高材生割美国韭菜被FBI通缉?本人回应予以否认
  2. h5网页水印SDK的实现代码示例
  3. plsql developer 10注册码----亲测截止2017年5月6可用
  4. java reflection list_Java Reflection(九):泛型
  5. 一个简单判等例子的深度分析
  6. 分享:手机应用存5个严重的信息安全隐患你晓得吗?
  7. 产品创新必备方法论:国外系统的产品创新
  8. Oracle 原理:UNDO表空间
  9. 值得推荐的微软技术公众号推荐
  10. 论HTML5 Audio 标签歌词同步的实现
  11. 成功没有捷径python_成功,大部分时候并没有捷径
  12. [设计模式-结构型]组合(Composite )
  13. wordpress rest api 漏洞又来了CVE-2017-5487 上次是修改文章内容这次可是泄露用户数据...
  14. MySQL 8.0.29安装版安装教程
  15. 图灵科普数学宝藏书单|购书狂欢618倒计时,这份书单闭眼入
  16. 界面原型创建工具Axure使用教程
  17. php实现推箱子游戏,C语言实现推箱子游戏的代码示例
  18. 快门速度、光圈、ISO(感光度)
  19. Linux软件漏洞修复指南
  20. 矩阵分析L3内积空间

热门文章

  1. 如何实现把固定内容自动写入excel_Excel如何把修改记录自动写入批注?
  2. 66.javac 编译与 JIT 编译\编译过程\javac 编译\词法、语法分析\填充符号表\语义分析\字节码生成\JIT 编译
  3. Scala方法定义,方法和函数的区别,将方法转换成函数
  4. Linux下apache服务器安装,sqlite安装,apache启动,关闭,重启,编写cig程序进行测试,浏览器访问cig程序
  5. Linux redhat下安装jdk-6u45-linux-x64.bin
  6. Kettle使用_31 CSV文件输入跳过前几(首)行之过滤记录
  7. python代码执行过程记录_[原创]IDAPython+OdbgScript动态获取程序执行流程
  8. 商品品牌信息的增删改查操作步骤_javaweb09-Servlet增删改查
  9. PyTorch模型读写、参数初始化、Finetune
  10. 深度学习--简述卷积层如何检测物体边缘原理