.NetCore——EFCore使用

.NetCore——EFCore使用

一、介绍
在现在的开发项目中有很多都是用EFCore进行数据交互的。下面的我就总结一下我的使用经验。在EFCore使用的时候一般都是用的最新的EFCore办法。所以有些新的使用技巧和方法,需要在官网上进行学习,了解。我用的是CodeFirst(代码优先)
二、实现
首先我们需要安装几个EFCore的插件。可以通过Nuget或者命令行进行安装。
在这里插入图片描述
如图中提示有升级标识的这5个插件都是需要安装的,这个安装在Model存放的项目中。
然后在Web/API的项目中也是需要安装这些的。
安装好以后就可以开始执行了
在Model存放的项目中添加一个EF上下文类库。这个之前使用过EF得咱们是都知道这块的。
在这里插入图片描述

 public class BuildingDbContext : DbContext
    {
        public BuildingDbContext(DbContextOptions<BuildingDbContext> options) : base(options)
        {

        }
    }

添加好这个类库后。咱们在回到Web/API的项目中的Startup类库中注册EFCore的服务。
在ConfigureServices方法中添加这一段代码

            //此处添加Entity服务
            services.AddDbContext<BuildingDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

通过这段代码看出在AddDvContext<>中放入了咱们刚刚添加的EFcore的上下文类库,这个还需要项目之间的引用。
在后边的话Configuration.GetConnectionString(“DefaultConnection”)还有这一句,这个是咱们在appsettings.json中配置的数据库连接字符串。DefaultConnection是json的节点名称
当把这些准备工作做完以后咱们就可以添加实体类进行测试了。
在这里插入图片描述

就是这样,这里继承的BaseModel是放的表中一些通用的字段。创建好实体以后。
还要要在那会创建的EFcore的上下文类中添加

public DbSet<User> users{ get;set;}

这个想必大家都知道是怎么回事的。

做完这个以后呢。咱们就需要打开程序包管理控制台了。工具——NuGet包管理器——程序包管理控制台
在这里插入图片描述
默认项目处选中你Model的项目。
然后输入添加迁移命令
Add-Migration 123
(注:123是随意定义的此次添加的迁移文件名称)
然后回车执行 如果你的实体中没有出错的话,是可以正常实行完成的。然后会弹出一个类库里面有你提交的的东西生成的代码。
这个时候还需要执行修改命令
Update-Database
当这个命令执行完成后 咱们在打开数据库查看 连数据库带表都给创建好了。

至于使用的话就可以在实现类中注入进去使用了。如图所示
在这里插入图片描述
而且这个在使用过程中不需要using(_db)这样的使用,直接使用即可。

三、扩展
在使用CodeFirst的时候,不能手动去对表进行任何的设置,否则就会在下一次使用命令行修改数据库的时候报错。
EFCore——DBFirst
在程序包管理控制台下,选中存放Model的项目执行

caffold-DbContext -Connection "连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "文件夹"

就会自动在相应的文件夹下创建Model实体,同时还会创建连接上下文的实体,在那个实体中可以看到,当使用上下文实体的时候,还有一个无参构造函数,当使用无参构造函数的时候会默认进到OnConfiguring这个方法中,进行自动连接。

四、总结
这其中还有很多很高明的地方需要我们去探索,实践。里面还有很多我遇见的坑,我就不一一说了,希望在使用前多看看官方文档。EF6中有很多的方法使用是跟之前有点出入的。

天道酬勤!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值