EntityFrameworkCore是一种用来映射数据库的ORM框架。使用它可以大量的减少编写SQL语言的时间。下面举一个例子。比如我们查询文章里id为1的文章。
SQL语句
select top 1 id formarticle where id=1
EntityFramework
EntityFramework有三中开发模式
数据库优先开发模式(Database First)
这种模式让我们首先建立数据库,然后根据数据库里的数据结构生成相应的实体对象(数据模型)。
模型优先开发模式(Model First)
模型优先我们自己创建空的数据模型,然后根据这些数据模型更新到数据库里。既先创建一个数据库,然后在创建各种对应的表
代码优先开发模式(Code First)
代码优先是我们根据实际需要,创建相应的数据属性和类别,通过orm框架进行管理,然后生成相应的实体
一些忠告
对于我们初学者来说,我们现在要做的是应该如何简单的使用ef code,我们暂时不要关心它上面模式不模式的,通过不断的实战应用,我个人是认为好过看书的。因为如果你要精通EntityFramework 光这一个技术都足够出一本书了,涉及的知识点太多。如果没有实战经验的配合,咱们可能学了前面忘了后面。当然,一些很基本的原理/基础知识我们最好要学习一下,起码让自己知道EntityFramework到底是个啥东西,自己心里有个基本的概念。这一些基础知识我建议大家可以到微软官方去看一下文档,或则去搜索引擎找一下相关的资料看一下。好了,我们开始进行创建第一个EntityFramework吧!
首先通过visual studio 项目实例下的依赖项,选择NuGet程序包。如下图
出现下图的界面,在“浏览”里搜索EntityFrameworkCore,因为本示例采用的是SQL SERVER 所以我们选择Microsoft.EntityFrameworkCore.SqlServer。版本因为小编未使用.net6 所以我们选择5.0打头的版本,然后点击安装。安装成功后在依赖项下面会出现一个分支为“包”的选项,下面会出现Microsoft.EntityFrameworkCore.SqlServer。如下图
好了,这样我们就安装好了EntityFrameworkCore 了,visual studio有自带的sql server服务器(安装软件的时候有选项)可以直接使用。但小编是单独安装了一个正式的SQL服务器,因为正式的SQL服务器能更方便的管理,这里根据个人需要自行选择。因为小编使用的是WIN7系统。所以只能使用SQL SERVER 2012。当然最好是使用SQL SERVER最新版本,比如2022.因为2012数据库居然没有JSON格式。因为现在很多数据都是使用json传输,数据库没有JSON的话最实体模型还得额外处理成JSON有点麻烦。我安装的本地SQL服务器
在上诉工作完成后,我们开始连接数据库。
设置appsettings.json,添加如下代码
"ConnectionStrings": { "mydb": "server=(local);database=student;Trusted_Connection=true" }
数据库连接字符串根据实际情况来设置,上面因为我是做为教程,所以直接使用windows登录的。下面是示例图
设置Startup.cs
安装完成EntityFramework后,我们需要注册这个服务。那么就需要设置Startup.cs了,首先引入EntityFramework
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
在Startup类下,定义私有字段
private readonly IConfiguration _configuration;
修改构造函数代码如下
public Startup(IConfiguration configuration) { _configuration = configuration; }
_configuration用来读取appsettings.json里保存的数据库连接字符串
在函数ConfigureServices里添加如下代码
services.AddDbContextPool<AppDb>(options => options.UseSqlServer(_configuration.GetConnectionString("mydb")));
注意AddDbContextPoolusing命令引入到Startup.cs里。
AppDb类的制作
新建一个文件夹取名为“Infrastructure” 添加类AppDb.cs代码如下
using Microsoft.EntityFrameworkCore; using WebApplication4.Models; namespace ide.Infrastructure { public class AppDb : DbContext { public AppDb(DbContextOptionsoptions) : base(options) { } public DbSetArticle { get; set; } } }
Startup.cs里通过using ide.Infrastructure; 引入AppDB。这样我们就成功的连接了数据库了。好了,我们可以暂时新建一个student的数据库,然后新建表article添加一个测试数据来看一下效果
进入HomeController.cs,改造一下它,完整代码如下
using ide.Infrastructure; using Microsoft.AspNetCore.mvc;//引入mvc using WebApplication4.Models; namespace WebApplication4.Controllers { public class HomeController : Controller //把HomeController的信息注入到 mvc.Controller, { private readonly AppDb app; public HomeController(AppDb appDb) //构造函数 { app = appDb; } [Route("")] //设置路由 这里设置为网站的根目录 public IActionResult Index() //返回IActionResult数据 { Article article = app.Article.Find(1); return View(article); //把变量article放入参数里,那么就可以在index.cshtml调用了 } } }
最终运行程序显示效果如下
好了,一个最简单的EntityFrameworkCore应用实例就讲解完成了。希望能给大家带来帮助!点我这里可以下载本示例的源码