• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#MVC+EF—结构搭建

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

近期做了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、查看数据库就会发现已经在数据库中生成了数据库。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#vs2005中如何获取datagridview中单元格的值发布时间:2022-07-14
下一篇:
C#正则_取出标签内的内容(非贪婪)发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap