什么是Code First

 

用白话说:就是不用打开数据库软件,也不用引用实体表,直接用代码code来把实体映射成数据表

 

 

 Code First实战

 

1.直接新建立一个控制台应用程序

Code First实战

 

2.我们新建两个类,一个叫ClassInfo

Code First实战

 

 

3. 一个叫StudentInfo

Code First实战

 

 

4.怎么让这两个类有关联呢?在ClassInfo里添加

Code First实战

 

 

5.在StudentInfo里添加

Code First实战

 

 

6.怎么把这两个类映射成两个表呢?首先添加引用。一个是system.data.entity,一个是Entity Framwork,还有一个是Entity Framwork.sqlserver。前者的位置如下

Code First实战

 


 

7.后两个得自己添加,先浏览——然后在这个目录下

Code First实战

Code First实战

 

这里请注意:如果您那里没有这两个DLL插件,请参考我的前两篇EF博客,新建“来自数据库的EF设计器”。然后在这个的packages里就能找到了~

 

 

8.然后在配置文件里写上数据库连接信息

Code First实战

 

 

 

9.接着,我们需要自己建立一个EF数据操作类。新建一个CodeFirstDbContext,然后需要导入命名空间,继承父类。代码如下

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace CodeFirst
{
    public class CodeFirstDbContext : DbContext
    {
        public CodeFirstDbContext() : base("name=connStr")
        {

        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }

        public DbSet<ClassInfo> ClassInfo { get; set; }
        public DbSet<StudentInfo> StudentInfo { get; set; }
    }
}

 

 

10.然后我们要完善学生类和班级类,为它们设置约束条件,这里需要添加引用哦

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirst
{
    public class ClassInfo
    {
        [Key]   //设置主键
        public int Id { get; set; }
        [StringLength(32)]  //设置类型长度
        [Required]  //不允许为空
        public string ClassName { get; set; }
        [Required]
        public DateTime CreateTime { get; set; }
        public virtual ICollection<StudentInfo> StudentInfo { get; set; }
    }
}

 

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirst
{
    public class StudentInfo
    {
        [Key]
        public int Id { get; set; }
        [StringLength(32)]
        [Required]
        public string StuName { get; set; }
        [Required]
        public DateTime SubTime { get; set; }
        public virtual ClassInfo ClassInfo { get; set; }
    }
}

 

 

11.我们可以在program里执行建表的命令了,先写入如下代码再运行一下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirst
{
    public class Program
    {
        static void Main(string[] args)
        {
            CodeFirstDbContext db = new CodeFirstDbContext();
            db.Database.CreateIfNotExists();
            ClassInfo classInfo = new ClassInfo();
            classInfo.ClassName = "0413班";
            classInfo.CreateTime = DateTime.Now;
            db.ClassInfo.Add(classInfo);
            db.SaveChanges();
        }
    }
}

 

 

12.检查你的数据表

Code First实战

 

Code First实战

 

 

尾声

 

是不是很神奇呢?不过你是否发现,CodeFirst是这三种方式最复杂的。要是我的话,能用前两种一定不用CodeFist。哈哈

 

相关文章:

  • 2022-02-06
  • 2021-12-25
  • 2021-07-06
  • 2021-09-12
  • 2021-05-08
  • 2022-12-23
  • 2021-10-20
  • 2021-08-12
猜你喜欢
  • 2021-10-16
  • 2021-07-10
  • 2021-11-09
  • 2022-12-23
  • 2021-07-24
  • 2022-12-23
相关资源
相似解决方案