Entity-Framework Core

340 阅读1分钟

简介

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

报错:

image.png

修改命令:
 添加: “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;
    }
}

在appsettings.json中连接数据库

image.png

image.png