EFCore入门使用

1.首先我们创建一个控制台项目(文章使用的是.NET 6.0框架)

2.在控制台项目中添加一个实体类

 public class Student
 {
     public int Id { get; set; }   //主键
     public string Name { get; set; }  //姓名
     public int Age { get; set; }  //年龄
     public bool Gender { get; set; } //性别
 }

3.给项目安装NuGet包 Microsoft.EntityFrameworkCore.SqlServer (安装NuGet包还有另外一种方式,这里我只展示了在程序包控制台安装方法)

Install-Package Microsoft.EntityFrameworkCore.SqlServer

不需要加版本号,因为在程序包管理控制台,会自动匹配适合此项目的版本

4.创建一个继承DbContext类的TestContext类(类名可以随便取,只需要符合命名规则就行)

public class TestContext:DbContext
{
    //Student类的数据集,方便在后面使用LINQ语句对数据操作时使用
    public DbSet<Student> Students { get; set; }

    /// <summary>
    /// 此方法用于对程序要连接的数据库进行配置
    /// </summary>
    /// <param name="optionsBuilder"></param>
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        //数据库连接字符串
        string connStr = "Data Source=localhost;Initial Catalog=Test6;Integrated Security=True;Encrypt=true;TrustServerCertificate=true;";
        //使用SqlServer数据库
        optionsBuilder.UseSqlServer(connStr);
        base.OnConfiguring(optionsBuilder);
    }

    /// <summary>
    /// 配置标识框架所需的架构
    /// </summary>
    /// <param name="modelBuilder"></param>
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //表示这个实体类对应数据库中名字为T_Students
        modelBuilder.Entity<Student>().ToTable("T_Students");
        base.OnModelCreating(modelBuilder);
    }
 }

这里没有配置Student类中的属性,所以会默认使用EF的默认配置

5.将实体类映射到数据库(方法一般有两种,这里我使用数据库迁移的方式)

       (1) 在【程序包管理器控制台】安装Microsoft.EntityFrameworkCore.Tools包(Install-Package Microsoft.EntityFrameworkCore.Tools)

        (2)安装好上述的包后继续在【程序包管理器控制台】执行如下命令:Add-Migration InitalDB,如果命令执行成功,将会输出如下内容,并且项目中会多一个Migrations文件夹

        (3)然后继续在【程序包管理器控制台】执行如下命令:Update-database,如果命令执行成功则会显示如下内容

 这个时候我们就可以去SQLServer查看是否存在对应的数据库和表了

6.插入数据,在项目主函数中书写代码

static void Main(string[] args)
{
    //实例化上下文
    using TestContext Ctx=new TestContext();

    //实例化Student对象
    var student1 = new Student() { Name = "张三", Age = 18, Gender = true };
    var student2 = new Student() { Name = "李四", Age = 20, Gender = false };
    var student3 = new Student() { Name = "王五", Age = 21, Gender = true };
    var student4 = new Student() { Name = "钱六", Age = 25, Gender = false };

    //让上下文跟踪实体对象,状态为添加状态
    Ctx.Students.Add(student1);
    Ctx.Students.Add(student2);
    Ctx.Students.Add(student3);
    Ctx.Students.Add(student4);
    //保存到数据库
    Ctx.SaveChanges();
    Console.WriteLine("插入成功");
    Console.ReadKey();
}

 7.查询数据

        static void Main(string[] args)
        {
            //实例化上下文
            using TestContext Ctx=new TestContext();

            //查询所有的学生
            var query = from o in Ctx.Students
                        select o;
            Console.WriteLine("==========所有学生==========");
            foreach (var s in query)
            {
                string str = "";
                if (s.Gender == true)
                    str = "男";
                else
                    str = "女";
                Console.WriteLine($"{s.Id},{s.Name},{s.Age},{str}");
            }

            //查询年龄大于20岁的学生
            var queryage = from o in Ctx.Students
                           where o.Age > 20
                           select o;
            Console.WriteLine("==========年龄>20岁的学生==========");
            foreach (var s in query)
            {
                string str = "";
                if (s.Gender == true)
                    str = "男";
                else
                    str = "女";
                Console.WriteLine($"{s.Id},{s.Name},{s.Age},{str}");
            }
            Console.ReadKey();
        }

 8.修改数据

        static void Main(string[] args)
        {
            //实例化上下文
            using TestContext Ctx=new TestContext();

            //更新数据
            var query=Ctx.Students.Where(s => s.Id== 1).FirstOrDefault();
            query.Age = 30;
            query.Name="Test";
            Ctx.Update(query);
            Ctx.SaveChanges();
            Console.WriteLine("修改成功");
            Console.ReadKey();
        }

 9.删除数据

        static void Main(string[] args)
        {
            //实例化上下文
            using TestContext Ctx=new TestContext();

            //删除数据
            var query=Ctx.Students.Where(s => s.Id== 1).FirstOrDefault();
            
            Ctx.Remove(query); 

            Ctx.SaveChanges();
            Console.WriteLine("删除成功");
            Console.ReadKey();
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值