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

 

转载于:https://www.cnblogs.com/zhangjd/p/9380012.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C# MVC项目中实现拖拽式添加数据,您需要使用JavaScript库来处理拖拽操作,并使用Ajax将数据发送到服务器以保存。下面是一个基本的实现步骤: 1. 在MVC视图中添加一个可拖拽的元素,例如一个div: ```html <div draggable="true" ondragstart="drag(event)">数据</div> ``` 2. 使用JavaScript编写drag函数,将数据放入拖拽数据传输对象中: ```javascript function drag(event) { event.dataTransfer.setData("text", event.target.textContent); } ``` 3. 在接受数据的MVC视图中添加一个可放置的元素,例如一个div: ```html <div id="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)"></div> ``` 4. 使用JavaScript编写allowDrop函数和drop函数,将数据从拖拽数据传输对象中提取出来,并使用Ajax将数据发送到服务器: ```javascript function allowDrop(event) { event.preventDefault(); } function drop(event) { event.preventDefault(); var data = event.dataTransfer.getData("text"); $.ajax({ type: "POST", url: "/Controller/AddData", data: { data: data }, success: function (result) { // 处理添加成功后的响应 }, error: function (result) { // 处理添加失败后的响应 } }); } ``` 5. 在MVC Controller中添加AddData方法,处理接收到的数据并将其存储到数据库中: ```csharp [HttpPost] public ActionResult AddData(string data) { // 处理接收到的数据并将其存储到数据库中 return Json(new { success = true }); } ``` 以上是一个基本的实现步骤,您可以根据具体需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值