EF Core的快速使用

  昨天晚上看了EF Core,EFCore(Entity Framework Core)是一个轻量级别的ORM框架,它可扩展性强、跨平台、使用简单,用于使用一种简单的、一致性的方式来访问关系型的数据库。

  一、建立项目

   建立普通的项目即可,我使用的是控制台程序。

  二、加载依赖

   点击菜单栏中的【项目】->【管理NuGet程序包(N)...】,在浏览中查找“Microsoft.EntityFrameworkCore.SqlServer”,选择版本,然后安装即可。

  三、编写代码

   ⑴建立实体对象

    要操作数据库中的某个表,需要先建立对应的类,比如,我想操作数据库中的表computerAssetsInfo,它有28个字段,C01为主键,我仅仅使用其中的三个字段,如下定义:

    public class computerAssetsInfo
    {
        public int C01{set; get; }
        public string? C02 { set; get; }
        public string? C04 { set; get; }

        public override string ToString()
        {
            return $"C01:{C01},C02:{C02},C04:{C04}";
        }
    }

   ⑵继承DbContext并重写

    public class MyDbContext : DbContext
    {
        public DbSet<computerAssetsInfo> ComputerAssetsInfo { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //base.OnConfiguring(optionsBuilder);
            optionsBuilder.UseSqlServer("Data Source=IP地址;Initial Catalog=数据库名称;User ID=用户名称;Password=用户密码;Encrypt=True;Trusted_Connection=True;TrustServerCertificate=True;Integrated Security=false;");
        }


        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<computerAssetsInfo>();
            modelBuilder.Entity<computerAssetsInfo>().HasKey(c => c.C01);
        }
    }

   ⑶应用EF Core提供的方式来操作数据表

   ●增加数据记录

        static async Task MyAdd()
        {
            using (var context = new MyDbContext())
            {
                context.Add(new computerAssetsInfo { C02="YQCY-01-02-0000",C04 = "这是第0条数据" });
                await context.SaveChangesAsync();
            }
        }

   ●修改数据记录

        static async Task MyUpdate()
        {
            using (var context = new MyDbContext()) {
                var data =await context.ComputerAssetsInfo.FirstOrDefaultAsync(x => x.C02 == "YQCY-01-02-0000");
                data.C04="这是修改后的数据";
                await context.SaveChangesAsync();
            }
        }

   ●删除数据记录

        static async Task MyDel()
        {
            using (var context = new MyDbContext()) {
                var data =await context.ComputerAssetsInfo.FirstOrDefaultAsync(x => x.C02 == "YQCY-01-02-0000");
                context.Remove(data);
                await context.SaveChangesAsync();
            }
        }

   ●查询数据记录

        static async Task MyQuery()
        {
            using (var context = new MyDbContext())
            {
                var records = await context.ComputerAssetsInfo.ToListAsync();
                records.ForEach(Console.WriteLine);
            }
        }

   ●主程序调用

using Microsoft.EntityFrameworkCore;
using System.Security.Cryptography.X509Certificates;

namespace EFCore6
{
    public class program
    {
        static async Task Main(params string[] args)
        {
            await MyDel();
            await MyQuery();

            await MyUpdate();
            await MyQuery();

            await MyDel();
            await MyQuery();
        }
        //......
    }
}

  四、出现的问题及解决办法

  ⑴ 提示缺少主键

   解决办法:重写方法设置表的主键信息:

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<computerAssetsInfo>();
            modelBuilder.Entity<computerAssetsInfo>().HasKey(c => c.C01);
        }

  ⑵提示“证书链是由不受信任的颁发机构颁发的”

   解决办法:在数据库连接信息中加入“TrustServerCertificate=True;Integrated Security=false;”

  虽然说EF Core上手容易,编写代码简单,但是要挖掘它的强大和灵活还是要费功夫的。

  学习文档地址:实体框架文档

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值