Asp.net Core入门(四) ————添加Entity FrameWork Core

什么是Entity Framework Core?
在官方文档上是这么说的:Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。EF Core 可用作对象关系映射程序 (ORM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。

EF主要有一下特点:
1、跨平台
2、建模
3、查询、保存、修改数据
4、使用乐观锁避免我们的数据被其他用户覆盖
5、在查询或保存时自动使用事务管理
6、提供低一级的缓存
7、数据迁移

EF的组件
EF组件
使用LINQ语句将面向对象的方式转化为sqlstatement,语句返回的是一个个实体对象Entity SQL能够执行原生的SQL的语句,通过LINQ和Entity SQL我们可以将对象提供给Object Service,它是访问数据库和返回数据的主要入口,负责数据的实例化,并将其传入下一层Data Privider。接下来Data Privider把LINQ和Entity SQL语言转化为真正的SQL语言,之后将通过ADO.Net数据库通讯从数据库中发送或索取数据。

添加Entity Framework Core步骤:
1、创建和配置数据库的上下关系对象:DatabaseContext连接数据库,映射数据模型,类似于代理服务器和路由器,是一个代码与数据库的连接器,在类中指定需要操作的数据模型。

public class AppDbContext:DbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
        {
        }
        public DbSet<Noodle> Noodles { get; set; }
        public DbSet<Feedback> Feedbacks { get; set; }
    }

DbContext必须具有DbContextOptions的实例才能执行后续工作。DbContextOptions 实例携带如下配置信息:

  • 要使用的数据库提供程序,通常通过调用方法(如 UseSqlServer 或 UseSqlite)进行选择。这些扩展方法需要相应的提供程序包,如 Microsoft.EntityFrameworkCore.SqlServer 或
    Microsoft.EntityFrameworkCore.Sqlite。 方法在
    Microsoft.EntityFrameworkCore 命名空间中定义。

  • 任何必需的数据库实例的连接字符串或标识符,通常作为参数传递给上面提到的提供者选择方法

  • 任何提供程序级别的可选行为选择器,通常还链接到对提供程序选择方法的调用中

  • 任何常规 EF Core 行为选择器,通常在提供程序选择器方法之后或之前链接

2、在构造函数中可以直接继承DbContextOptions:
public ApDbContext(DbContextOptions options) : base(options) { }
3、在startup.cs中引入相关包。并且在ConfigureServices方法中注入该对象:services.AddDbContext(options=> => options.UseSqlServer(“connectionstring”));//connectionstring为之后要传入的数据库
4、在解决方案资源管理器中右击项目添加,新建项,在搜索框中输入appsetting进行添加。在appsettings.json文件中显示了数据库的默认配置信息,将数据库修改为LanzhouNoodleDb3、在startup中添加配置文件的构造函数并且修改AddDbContext函数。 public IConfiguration Configuration { get; } //由于只需要读取,因此只要get

  public Startup(IConfiguration configuration)        {                        Configuration = configuration;
          }
          ...
          
  services.AddDbContext<AppDbContext>(options=>  options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

5、将假数据替换为真数据。新建文件NoodleRepository.cs类文件:

   public class NoodleRepository : INoodleRepository
    {
        private readonly AppDbContext _context;
        public NoodleRepository(AppDbContext appDbContext)
        {
            _context = appDbContext;
        }
        public IEnumerable<Noodle> GetAllNoodles()
        {
            return _context.Noodles;
        }
        public Noodle GetNoodleById(int Id)
        {
            return _context.Noodles.FirstOrDefault(n => n.Id==Id);
        }
    }

之后将startup.cs中的MockNoodleRepository改为真正的面条仓库NoodleRepository;同理Feedback也是如此。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SharlockYu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值