简介
Entity Framework Core是轻量化、可拓展、开源和跨平台版的常用的数据访问技术
EF Core可用作对象关系映射程序(O/RM):
·使.NET开发人员能够使用.NET对象处理数据库
·无需像往常一样编写大量的数据访问代码
支持多个数据库引擎,需要引入Nuget包
ORM
对象关系映射,它是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中
常见的ORM框架:EFCore、MyBatisPlus
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design
完成数据库的迁移
dotnet tool install dotnet-ef -g
连接SQL Server数据库并将数据映射到项目Entities文件夹下
vscode命令:
dotnet ef dbContext scaffold "server=.;database=Morning;uid=sa;pwd=123456" Microsoft.EntityFrameworkCore.SqlServer -o Entities
报错:
修改命令:
添加: “Encrypt=True;Trusted_Connection=True;TrustServerCertificate=True;”
dotnet ef dbContext scaffold "server=.;database=Morning;uid=sa;pwd=123456 Encrypt=True;Trusted_Connection=True;TrustServerCertificate=True;" Microsoft.EntityFrameworkCore.SqlServer -o Entities
连接数据库映射数据命令行
odotnet ef dbContext scaffold "server=.;database=Morning;uid=sa;pwd=123456 Encrypt=True;Trusted_Connection=True;TrustServerCertificate=True;" Microsoft.EntityFrameworkCore.SqlServer -o Entities
数据获取(操作、数据追踪)
与数据库进行连接,需要一个上下文,与C#的类进行交互,上下文类似于一个桥梁
public class WeatherForecastController : ControllerBase
{
public MorningContext Context {get; set;}
public WeatherForecastController(MorningContext context)
{
this.Context = context;
}
[HttpGet(Name = "GetWeatherForecast")]
public ScoreInfo Get()
{
// 数据获取
// using MorningContext context = new MorningContext();
// 实体追踪 自动携带的 非常消耗性能
// 全局数据取消追踪
Context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
// 局部数据关闭 AsNoTracking
var scoreInfo = Context.ScoreInfos.AsNoTracking().FirstOrDefault(m=> m.Id == 3);
// 单独拿一个实体 FirstOrDefault
// var scoreInfo = context.ScoreInfos.FirstOrDefault(m=> m.Id == 3);
// 获取数据后 断开数据库的连接
// context.Dispose();
// 如果实体追踪开启 则不用使用Update
scoreInfo.Name = "香泥辣铁汁11";
// context.Update(scoreInfo);
Context.SaveChanges();
return scoreInfo;
}
}