mvc5 ef6 mysql_[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2
寫在前面
今天吃飯回來(lái),突然有一個(gè)更好的想法,這里做一下記錄。
系列文章
[實(shí)戰(zhàn)]MVC5+EF6+MySql企業(yè)網(wǎng)盤實(shí)戰(zhàn)(17)——思考2
思路
平時(shí)如果要獲取電腦上的文件,大都會(huì)采用遞歸的方式,所以就想到這樣一個(gè)表結(jié)構(gòu)。如圖:
id是文件或者文件夾的自增id,pid則是文件或者文件夾所在的文件夾的id,也就是父id。這樣設(shè)計(jì)數(shù)據(jù)表的好處是,上傳文件,創(chuàng)建文件夾,修改文件夾,只需要考慮當(dāng)前對(duì)象就行,不需要再去考慮路徑的問題。修改名稱就做到只是修改名稱就行,不再考慮修改文件夾的名稱對(duì)找不到文件的問題了。
所以MyFile類如下:
///
///我的文件信息///
public classMyFile
{
[Key]public int Id { set; get; }///
///
///
[Display(Name = "名稱")]
[StringLength(1024)]public string Name { set; get; }///
///擴(kuò)展名///
[Display(Name = "文件擴(kuò)展名")]
[StringLength(8)]public string FileExt { set; get; }///
///文件或者文件夾圖標(biāo)///
[Display(Name = "文件圖標(biāo)")]
[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; }///
///文件修改時(shí)間///
[Display(Name = "文件修改時(shí)間")]public DateTime ModifyDt { set; get; }///
///文件上傳時(shí)間///
[Display(Name = "文件上傳時(shí)間")]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; }
}
總結(jié)
這樣的操作更方便,前段傳參的時(shí)候,只需要將當(dāng)前對(duì)象的id,pid傳到服務(wù)端就行。修改文件夾更簡(jiǎn)單了。出現(xiàn)今天的問題,是在開始這個(gè)項(xiàng)目的時(shí)候,沒有考慮太深入,就是想著想到哪兒就寫到哪兒,沒有從整體去想細(xì)節(jié)問題。導(dǎo)致現(xiàn)在,該來(lái)該去的。
總結(jié)
以上是生活随笔為你收集整理的mvc5 ef6 mysql_[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招联金融冻结额度多久恢复
- 下一篇: 怎么进行mysql注入测试_MySQL