Let's go

CodeFrist基础

Code First(代码先行)。它思想就是先定义模型中的类,再通过这些类生成数据库。这种开发模式适合于全新的项目,它使得我们可以以代码为核心进行设计而不是先构造数据库。

EF中创建数据库的表必须要有主键~!否则 将不成功。

首先我们创建3个实体类:

SysPermissonInfor.cs

 1     public class SysPermissonInfor
 2     {
 3         public SysPermissonInfor() {
 4 
 5         }
 6 
 7         /// <summary>
 8         /// 菜单权限编号
 9         /// </summary>
10         [Key]
11         [DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
12         public int id { get; set; }
13         /// <summary>
14         /// 父菜单权限编号
15         /// </summary>
16         [Required] //非空声明
17         public int parentId { get; set; }
18         /// <summary>
19         /// 菜单名称
20         /// </summary>
21         [StringLength(50)]  //最大长度
22         [Required] //非空声明
23         public string menuName { get; set; }
24         /// <summary>
25         /// 区域名
26         /// </summary>
27         [StringLength(50)]  //最大长度
28         public string areaName { get; set; }
29         /// <summary>
30         /// 控制器名
31         /// </summary>
32         [StringLength(50)]  //最大长度
33         public string controllerName { get; set; }
34         /// <summary>
35         /// 方法名
36         /// </summary>
37         [StringLength(50)]  //最大长度
38         public string actionName { get; set; }
39         /// <summary>
40         /// 图标类名
41         /// </summary>
42         [StringLength(50)]  //最大长度
43         public string iconClassName { get; set; }
44         /// <summary>
45         /// 备注
46         /// </summary>
47         [StringLength(200)]  //最大长度
48         public string remarkContent { get; set; }
49         /// <summary>
50         /// 创建时间
51         /// </summary>
52         public Nullable<System.DateTime> addTime { get; set; }
53         /// <summary>
54         /// 排序标记
55         /// </summary>
56         public Nullable<int> sortFlag { get; set; }
57         /// <summary>
58         /// 隐藏标记
59         /// </summary>
60         public Nullable<int> delFlag { get; set; }
61 
62         public virtual ICollection<SysRoleInfor> sysRoleInfor { get; set; }
63     }
View Code

SysRoleInfor.cs

 1     public class SysRoleInfor
 2     {
 3         public SysRoleInfor() {
 4 
 5         }
 6 
 7         /// <summary>
 8         /// 角色编号
 9         /// </summary>
10         [Key]
11         [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
12         public int id { get; set; }
13         /// <summary>
14         /// 角色名称
15         /// </summary>
16         [StringLength(50)]  //最大长度
17         [Required] //非空声明
18         public string roleName { get; set; }
19         /// <summary>
20         /// 角色说明
21         /// </summary>
22         [StringLength(100)]  //最大长度
23         public string roleRemark { get; set; }
24         /// <summary>
25         /// 录入时间
26         /// </summary>
27         public Nullable<System.DateTime> addTime { get; set; }
28         /// <summary>
29         /// 隐藏标记
30         /// </summary>
31         public Nullable<int> delFlag { get; set; }
32 
33         /// <summary>
34         ///多个用户可以对应一个角色
35         /// </summary>
36         public virtual ICollection<SysUserInfor> sysUserInfor { get; set; }
37         /// <summary>
38         /// 一个权限对应一个角色
39         /// </summary>
40         public virtual SysPermissonInfor sysPermissonInfor { get; set; }
41 
42     }
View Code

SysUserInfor.cs

public class SysUserInfor
    {
        public SysUserInfor() {

        }

        /// <summary>
        /// 操作员编号 自增
        /// </summary>
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int id { get; set; }
        /// <summary>
        /// 操作员帐号
        /// </summary>
        [StringLength(50)]  //最大长度
        [Required] //非空声明
        public string userAccount { get; set; }
        /// <summary>
        /// 操作员密码
        /// </summary>
        [StringLength(32)]  //最大长度
        [Required] //非空声明
        public string userPwd { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        [StringLength(20)]  //最大长度
        [Required] //非空声明
        public string userRealName { get; set; }
        /// <summary>
        /// 性别 0:女 1:男
        /// </summary>
        public Nullable<int> userSex { get; set; }
        /// <summary>
        /// 联系方式
        /// </summary>
        [StringLength(50)]  //最大长度
        public string userPhone { get; set; }
        /// <summary>
        /// 备注说明 长度500
        /// </summary>
        [StringLength(500)]  //最大长度
        public string userRemark { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Nullable<System.DateTime> addTime { get; set; }
        /// <summary>
        /// 隐藏标记 0:正常 1:隐藏
        /// </summary>
        public Nullable<int> delFlag { get; set; }

        /// <summary>
        ///一个用户对应一个角色
        /// </summary>
        public  SysRoleInfor sysRoleInfor { get; set; }
    }
View Code

其次创建一个DemoDbContext类

 

 1 public class DemoDbContext : DbContext
 2     {
 3         public DemoDbContext()
 4              : base("name=ConncodeFirst")
 5         {
 6             //数据库不存在则生成数据库
 7             Database.SetInitializer<DemoDbContext>(new CreateDatabaseIfNotExists<DemoDbContext>());
 8 
 9         }
10         public DbSet<SysUserInfor> SysUserInfor { get; set; }
11         public DbSet<SysRoleInfor> SysRoleInfor { get; set; }
12         public DbSet<SysPermissonInfor> SysPermissonInfor { get; set; }
13 
14         protected override void OnModelCreating(DbModelBuilder modelBuilder)
15         {
16             base.OnModelCreating(modelBuilder);
17         }
18 
19     }
View Code

 

在mvc的Web.config里的configuration下增加数据库连接:

  <connectionStrings>
    <add name="ConncodeFirst" connectionString="server=localhost;uid=sa;pwd=123456;database=CodeFirst_Task" providerName="System.Data.SqlClient"/>
  </connectionStrings>

再创建控制器,运行已生成数据库

posted @ 2018-09-26 09:41  chenze  阅读(222)  评论(0编辑  收藏  举报
有事您Q我