C# MVC+EF—結構搭建


近期做了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、查看數據庫就會發現已經在數據庫中生成了數據庫。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM