EF
一、EF
微软官方提供的ORM工具,ORM 是将数据存储从域对象自动映射到关系型数据库的工具。ORM主要包括3个部分:域对象、关系数据库对象、映射关系。ORM使类提供自动化CRUD,使开发人员从数据库API和SQL中解放出来。
ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。
EF有三种使用场景:
1. 从数据库生成Class
2.由实体类生成数据库表结构
3. 通过数据库可视化设计器设计数据库,同时生成实体类
二、DbContext实例化
1.AddDbContext依赖注入
AddDbContext 将名为 MyToDoDbContext 的 DbContext 子类注册为 ASP.NET Core 应用程序服务提供程序(也称为 依赖关系注入容器)中的作用域服务。options.UseSqlServer 上下文配置为使用 SQL Server 数据库提供程序。
//注入数据库上下文 builder.Services.AddDbContext<MyToDoDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("ConnStr")) );
MyToDoDbContext (数据库上下文)类必须公开具有 DbContextOptions<ApplicationDbContext> 参数的公共构造函数。 这是将 AddDbContext 的上下文配置传递到 DbContext 的方式。
/// <summary> /// 构造函数 /// </summary> /// <param name="options"></param> public MyToDoDbContext(DbContextOptions<MyToDoDbContext> options):base(options) { }
然后,MyToDoDbContext 可以通过构造函数注入在 ASP.NET Core 控制器或其他服务中使用。
private readonly MyToDoDbContext myToDoDbContext; public IndexController( MyToDoDbContext myToDoDbContext) { this.myToDoDbContext = myToDoDbContext; }
2.new DbContext 上下文
重写 OnConfiguring 方法来执行配置。
public class MyToDoDbContext : DbContext { private readonly string _connectionString; public MyToDoDbContext (string connectionString) { _connectionString = connectionString; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(_connectionString); } }
3.DbContextOptionsBuilder 创建 DbContextOptions 对象
public class MyToDoDbContext: DbContext { public MyToDoDbContext(DbContextOptions<MyToDoDbContext> options) : base(options) { } }
var contextOptions = new DbContextOptionsBuilder<ApplicationDbContext>() .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Test") .Options; using var context = new MyToDoDbContext(contextOptions);

                
            
        
浙公网安备 33010602011771号