.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中有很多的方法使用是跟之前有点出入的。
天道酬勤!!!