近期做了MVC+EF的項目,現在項目完結了,抽個時間寫個小DOM總結一下,順便加深理解。
一、新建MVC項目,結構是這樣的
App_Data:存放數據庫文件。
App_Start:存放一些配置邏輯文件,常用的是路由配置。
Content:一般用來存放CSS文件。
Controllers:一般用來存放控制器。
fonts:存放字體文件。
Models:存放數據模型。
Scripts:存放js文件。
Views:存放視圖,也就是頁面。
自動生成的mvc結構會產生示例文件,開發之前可以刪除,沒什么用。
二、新建數據模型(Models)
一般情況下我會建立一個基類,有些字段基本每個表都會有,建立一個基類比較方便,直接繼承即可。新建基類EntityBase 將Id設置為主鍵,並且為自動增長。
public class EntityBase { public EntityBase() { this.CreateTime = DateTime.Now; this.ModifyTime = this.CreateTime;/*創建時ModifyTime = CreateTime*/ } [Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } /// <summary> /// 創建時間 /// </summary> public DateTime CreateTime { get; set; } /// <summary> /// 最近一次修改時間 /// <para>第一次創建時==CreateTime</para> /// </summary> public DateTime ModifyTime { get; set; } /// <summary> /// 本條記錄是否被刪除 /// </summary> public bool IsDel { get; set; } }
部門管理表,繼承基類
public class Department : EntityBase { public Department() { IsShow = true; } /// <summary> /// 部門名稱 /// </summary> public string Name { get; set; } /// <summary> /// 介紹 /// </summary> public string Introduce { get; set; } /// <summary> /// 排序值 /// </summary> public int OrderId { get; set; } /// <summary> /// 是否顯示 /// </summary> public bool IsShow { get; set; } }
招聘管理表
public class Recruit : EntityBase { public Recruit() { IsShow = true; } /// <summary> /// 職位名稱 /// </summary> public string Name { get; set; } /// <summary> /// 職位描述 /// </summary> public string Describe { get; set; } /// <summary> /// 開始時間 /// </summary> public DateTime StarTime { get; set; } /// <summary> /// 結束時間 /// </summary> public DateTime? EndTime { get; set; } /// <summary> /// 招聘人數 /// </summary> public string Number { get; set; } /// <summary> /// 工作經驗 /// </summary> public string Experience { get; set; } /// <summary> /// 外鏈接 /// </summary> public string ExternaLink { get; set; } /// <summary> /// 頁面類型 /// </summary> public bool IsPage { get; set; } /// <summary> /// 排序值 /// </summary> public int OrderId { get; set; } /// <summary> /// 是否顯示 /// </summary> public bool IsShow { get; set; } /// <summary> /// 分類ID /// </summary> public int DepartmentId { get; set; } /// <summary> /// 關聯的分類 /// </summary> public virtual Department Department { get; set; } }
簡歷管理
public class Resume : EntityBase { public Resume() { IsShow = true; } /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 性別 /// </summary> public string Sex { get; set; } /// <summary> /// 聯系方式 /// </summary> public string ContactInfo { get; set; } /// <summary> /// 應聘職位 /// </summary> public string Position { get; set; } /// <summary> /// 描述 /// </summary> public string Describe { get; set; } /// <summary> /// 排序值 /// </summary> public int OrderId { get; set; } /// <summary> /// 是否顯示 /// </summary> public bool IsShow { get; set; } }
二、建立數據庫上下文,添加數據表
public class PracticeContext : DbContext { public PracticeContext() : base("name=PracticeContext") { base.Configuration.LazyLoadingEnabled = false; }
public DbSet<Department> Department { get; set; } public DbSet<Recruit> Recruit { get; set; } public DbSet<Resume> Resume { get; set; } }
三、配置文件中添加連接數據庫字符串,設置name和數據庫上下文中的要一致。
<connectionStrings> <add name="PracticeContext" connectionString="Data Source=.;Initial Catalog=Website; User ID=sa;Password=123456;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/> </connectionStrings>
四、數據庫遷移。工具-》NuGet包管理器=》程序包管理控制台
執行命令:
1、Enable-Migrations
會生成一個文件夾Migrations文件夾,里面存放數據庫遷移產生的文件
2、Add-Migration Init_tabel
添加數據模型到數據庫,只有寫進數據庫上下文中的表才會執行創建操作,這一步只是創建了執行的語句,並沒有執行。
3、Update-Database
執行最新數據庫遷移文件,即上條語句生成的執行語句。
4、只有首次執行數據遷移需要執行Enable-Migrations命令,之后再執行就不需要了。
5、查看數據庫就會發現已經在數據庫中生成了數據庫。