首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏跟着阿笨一起玩NET

    Scaffold-DbContext 命令使用

    1、官网地址 https://docs.microsoft.com/zh-cn/ef/core/cli/powershell#scaffold-dbcontext 2.命令说明 Scaffold-DbContextDbContext 数据库的和实体类型生成代码。 为了使 Scaffold-DbContext 生成实体类型,数据库表必须具有主键。 参数: SCAFFOLD-DBCONTEXT 参数 说明 -连接 <String> 用于连接到数据库的连接字符串。 -上下文 <String> DbContext要生成的类的名称。 -架构 <String[]> 要为其生成实体类型的表的架构。 如果省略此参数,则包括所有架构。

    2.5K30发布于 2021-09-06
  • 来自专栏软件工程师Michael

    EF Core 中确保 DbContext 线程安全

    每个线程/任务使用自己的 DbContext 实例这是推荐的做法。每个线程或任务都应该有自己的 DbContext 实例,避免多个线程共享同一个实例。 你可以在每个线程或任务中创建一个新的 DbContext 实例,并在任务完成后将其释放。 = await context.MyEntities.ToListAsync(); // 其他操作... } }}// 在并发执行时,每个任务都会创建自己的 DbContext 使用依赖注入管理 DbContext 生命周期如果你使用的是依赖注入框架(如 ASP.NET Core 的内置 DI),你可以将 DbContext 注册为 Scoped 生命周期。 这意味着每个请求或每个任务会有一个独立的 DbContext 实例。在多线程环境中,你需要确保每个线程或任务都有自己的作用域,并从该作用域中获取 DbContext 实例。

    30300编辑于 2025-05-12
  • 来自专栏跟着阿笨一起玩NET

    ASP.NET Core 使用 AutoFac 注入 DbContext

    DI 3.0 —— 使用 Register 方法 其实这个是我根据 Intellisence 试出来的,代码如下: // 首先注册 options,供 DbContext 服务初始化使用 containerBuilder.Register MigrationsAssembly("BookList.Domain")); return optionsBuilder.Options; }).InstancePerLifetimeScope(); // 注册 DbContext containerBuilder.RegisterType<BookListDbContext>() .AsSelf() .InstancePerLifetimeScope(); 实验证明,这样注入 DbContext

    1.9K30发布于 2020-10-09
  • 来自专栏软件工程师Michael

    EF Core中确保DbContext线程安全(二)

    1.使用同步机制(如锁)保护 DbContext如果你确实需要在多个线程中共享同一个 DbContext 实例(虽然不推荐),你可以使用锁(lock)来确保同一时间只有一个线程可以访问 DbContext 在多线程编程中,尽量避免将DbContext实例传递给多个线程。 IDbContextFactory是专门用于在需要时创建DbContext实例的工厂类,适用于多线程或需要手动管理DbContext生命周期的场景。 实例:DbContext 不是线程安全的,不能在多个线程中并发使用。 每个线程/任务使用独立的 DbContext 实例:推荐的做法,确保线程安全。使用依赖注入管理 DbContext 生命周期:在 ASP.NET Core 等框架中,使用 Scoped 生命周期。

    44000编辑于 2025-05-12
  • 来自专栏DotNet程序园

    FreeSql.DbContext ,向"不是真正的 ORM" 说拜拜

    DbContext 提供 SaveChanges 方法; 执行队列; DbSet 提供 Add、AddRange、Remove、RemoveRange、Update、UpdateRange 方法; 以及 实体的主键值,value=实体; Add/AddRange(entitys) 验证 entitys 主键值,是否存在于 states 中,存在时报错; 验证 entitys 主键中存在自增: 若有,则立即开启 DbContext states 的值; 更新数据规则 对比 states 中存在的历史快照值,返回即将修改的 fields; 演示代码 using FreeSql;public class SongContext : DbContext 当插入单条时,采用了第一行代码的 SQL 命令; 当批量插入时,采用了后面看上去复杂的 SQL 命令; 所有传入的实体属性值在执行完成后,都会更新; 特别说明 FreeSql.DbContext 目前仍处于研究开发阶段 希望 FreeSql.DbContext 随着时间的积累,稳定性和成熟度有所提升,不久成为一个真正的 ORM。 有人会担心,我们第三方做的不靠谱,没有 EFCore 稳定的说话,这个是当然。

    1.7K10发布于 2019-04-22
  • 多数据库DbContext架构使用指南

    每个API项目和组件都有独立的数据库特定DbContext用于迁移管理,同时保持业务逻辑的统一性。 添加新功能的数据库变更 ## 步骤1: 修改实体类和DbContext配置 # 步骤2: 为每种数据库创建迁移 . 统一的架构模式 ·所有项目遵循相同的DbContext设计模式 ·一致的迁移管理方式 ·标准化的配置和部署流程 2. 代码复用最大化 ·业务逻辑在基础DbContext中统一管理 ·数据库特定配置分离,避免重复 ·公共组件可被多个项目复用 3. 迁移文件管理 ·不同数据库的迁移文件分别存储 ·需要为每种数据库分别生成迁移 ·使用统一的迁移脚本自动处理目录和DbContext选择 2.

    15610编辑于 2025-12-17
  • 来自专栏DotNet程序园

    已实现乐观锁功能,FreeSql.DbContext 准备起航

    上回说到 FreeSql.DbContext 的规则,以及演示它的执行过程,可惜当时还不支持“乐观锁”,对于更新数据来讲并不安全。 FreeSql 核心库 v0.3.27 已提供乐观锁支持。 无论是使用 FreeSql/FreeSql.Repository/FreeSql.DbContext,每次更新 version 的值都会增加 1 至此,FreeSql.DbContext 的更新操作就安全了 安装 dotnet add package FreeSql.DbContext 测试功能 下面演示更新 BigNumber 属性,为什么定义他为 string 呢,对于数字的更新 set clicks 当更新时,版本不正确提示以下错误,DbContext 将回滚操作: ? 总结 FreeSql.DbContext 实现类似 EFCore 使用方法,跟踪对象状态,最终通过 SaveChanges 方法提交事务。

    91230发布于 2019-04-11
  • 来自专栏DotNet程序园

    FreeSql.DbContext ,向"不是真正的 ORM" 说拜拜

    DbContext 提供 SaveChanges 方法; 执行队列; DbSet 提供 Add、AddRange、Remove、RemoveRange、Update、UpdateRange 方法; 以及 实体的主键值,value=实体; Add/AddRange(entitys) 验证 entitys 主键值,是否存在于 states 中,存在时报错; 验证 entitys 主键中存在自增: 若有,则立即开启 DbContext states 的值; 更新数据规则 对比 states 中存在的历史快照值,返回即将修改的 fields; 演示代码 using FreeSql;public class SongContext : DbContext 当插入单条时,采用了第一行代码的 SQL 命令; 当批量插入时,采用了后面看上去复杂的 SQL 命令; 所有传入的实体属性值在执行完成后,都会更新; 特别说明 FreeSql.DbContext 目前仍处于研究开发阶段 希望 FreeSql.DbContext 随着时间的积累,稳定性和成熟度有所提升,不久成为一个真正的 ORM。 有人会担心,我们第三方做的不靠谱,没有 EFCore 稳定的说话,这个是当然。

    1.3K30发布于 2019-04-11
  • 来自专栏单片机/c#技术分享

    【源码解读(一)】EFCORE源码解读之创建DBContext查询拦截

    二:DbContext的构造函数里面做了那些事情。     三:如何在EfCore的服务中获取到Web注入的服务的方式之一。     四:拦截查询的几种方式。      在下面的代码,刚开始判断了如果DBContext的生命周期是单例,要将Option的生命周期也设置为单例,如果不设置为单例,就会出现错误,这个错误在之前讲解IOC的文章中,我记得也提到过,接下来判断设置 Option的委托是否为null,如果不为null,那DBContext的构造函数是必须要有一个参数,所以下面调用了一个方法CheckContextConstructors。 DBContext构造     构造函数的代码是整体是没多少的,但是最重要的还是在于GetOrAdd的方法。 ) { _logger = logger; this.webGetName = webGetName; DbContext = dbContext

    1.5K20编辑于 2023-10-16
  • 来自专栏GreenLeaves

    EF简介

    Dbcontext:这个类就是实现关系型数据库和面线对象交互的数据接口。 ? ? 这个类,所以Dbcontext:这个类就是实现关系型数据库和面线对象交互的通用数据接口。 :告诉上下文,执行保存操作 dbContext.SaveChanges(); #endregion list.AutoId = //利用EF像数据库中添加一条数据 //first step:创建访问数据库的统一入口.创建EF的上下文 TestEntities dbContext 3、当我们在操作完数据库对应的表示表实体后,执行dbContext.SaveChanges()后,编译器报一个实体或多个实体验证失败!

    1.9K80发布于 2018-01-24
  • 来自专栏ZKEASOFT

    动态构建Lambda表达式实现EF动态查询

    public string Name { get; set; } public int Age { get; set; } } class MyDbContext : DbContext class Program { static void Main(string[] args) { MyDbContext dbContext = new MyDbContext(); foreach (var item in dbContext.People.Where(m => m.Age > 1)) public string Name { get; set; } public int Age { get; set; } } class MyDbContext : DbContext class Program { static void Main(string[] args) { MyDbContext dbContext

    2.4K10发布于 2019-08-11
  • 来自专栏Ken的杂谈

    ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门

    DbContext this.DbContext = dbContext; } //添加 public int Add(UserEntity { using (DbContext) { var userFromContext = DbContext.Users.FirstOrDefault (u => u.Id == id); DbContext.Users.Remove(userFromContext); return DbContext.SaveChanges ) { return DbContext.Users.FirstOrDefault(u => u.Id == id); } //在构造函数中注入DbContext this.DbContext = dbContext; } //添加 public int

    2.8K21发布于 2018-12-29
  • 来自专栏DotNet NB && CloudNative

    EF 10 LeftJoin & RightJoin 的支持

    = scope.ServiceProvider.GetRequiredService<TestDbContext>(); await dbContext.Database.EnsureDeletedAsync (); await dbContext.Database.EnsureCreatedAsync(); dbContext.Jobs.Add(new Job() { Id = 1, Name = "test" }); dbContext.Employees.Add(new Employee() { Id = 1, JobId = 1, Name = "Alice" }); dbContext.Employees.Add(new Employee() { Id = 2, JobId = 2, Name = "Jane" }); await dbContext.SaveChangesAsync .LeftJoin(dbContext.Jobs.AsNoTracking(), e => e.JobId, j => j.Id, (e, j) => new {

    28810编辑于 2025-04-27
  • 来自专栏AI.NET极客圈

    EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽

    DbContextPool 是 ASP.NET Core 2.1 引入的新特性,可以节省创建 DbContext 实例的开销,但没有想到其中藏着一个小坑。 今天在周会上谈了这个怪问题,后来突然想到:每个 DbContext 实例都会占用一个数据库连接(SqlConnection),不启用 DbContextPool 的时候,请求一结束,对应 DbContext 而使用 DbContextPool 的时候,请求结束后 DbContext 不会被 Dispose 而是被放回 DbContextPool ,DbContext 被放回属于自己的池中,就意味它对应的数据库连接不会被放回它所属的连接池 DbContextPool 中的每一个 DbContext 都对应一个数据库连接,DbContextPool 中每多一个 DbContext ,数据库连接池中就会少一个数据库连接。 (假设是100),当填到第 101 个 DbContext 时就会出现上面的错误。

    2.7K20发布于 2019-08-20
  • 来自专栏跟着阿笨一起玩NET

    linq to sql 三层架构中使用CRUD操作

    IGasBottles 成员 public Model.GasBottles GetModel(int gasBottlesID) { var db = DbContext.LGSCMSDataContext gasBottles) { bool flag = false; try { var db = DbContext.LGSCMSDataContext var changedData = gasBottles.ConvertToEntity<DataLinqEntity.GasBottles>(); var db = DbContext.LGSCMSDataContext Target, PI.GetValue(Source, null), null); } } } #endregion DbContext public class DbContext { ///

    /// /// private

    72910发布于 2018-09-19
  • 来自专栏DotNet NB && CloudNative

    《ASP.ENT Core 与 RESTful API 开发实战》-- (第5章)-- 读书笔记(中)

    DbContext { get; set; } public RepositoryBase(DbContext dbContext) { DbContext = dbContext; } public Task<IEnumerable<T>> GetAllAsync() { return (Expression<Func<T, bool>> expression) { return Task.FromResult(DbContext.Set<T>( <T>().Add(entity); } public void Update(T entity) { DbContext.Set dbContext) : base(dbContext) { } } } 以同样的方式创建 IBookRepository 与 BookRepository

    1K10发布于 2021-01-13
  • 来自专栏DotNet NB && CloudNative

    不一样的 EF Interceptor 注入

    一样配置 DbContextOptions 所以我们可以单独注册一个 IDbContextOptionsConfiguration<TContext> 服务来配置 DbContextOptions,给 DbContext ,由于 DbContext 默认的服务声明周期是 Scoped 所以我们也将服务默认注入为 Scoped,为了支持用户自定义 DbContext 服务生命周期我们也支持下自定义服务声明周期 这样定义之后会发现有一个 = scope.ServiceProvider.GetRequiredService<FileTestDbContext>(); await dbContext.Database.EnsureCreatedAsync (); dbContext.Entities.Add(new TestEntity { Id = 2, Name = "1" }); await dbContext.SaveChangesAsync() ; file sealed class FileTestDbContext(DbContextOptions<FileTestDbContext> options) : DbContext(options

    27500编辑于 2025-03-07
  • EF Core性能翻车?3秒变0.3秒的优化秘籍大公开!

    (); 优化后: var pageSize = 20; var pageNumber = 1; var palaces = await dbContext.Palaces .OrderBy 神功四:AsNoTracking - 无状态查询 优化前: var palace = await dbContext.Palaces.FirstAsync(p => p.Id == id); 优化后: ,不需要更新实体时使用 神功五:批量操作 - 一气呵成 优化前: foreach (var item in items) { dbContext.Add(item); await dbContext.SaveChangesAsync (); // 每次保存 } 优化后: dbContext.AddRange(items); // 批量保存 await dbContext.SaveChangesAsync(); 效果: 1000 批量更新/删除 // 传统方式 var palaces = await dbContext.Palaces .Where(p => p.Level < 5) .ToListAsync()

    33710编辑于 2025-08-24
  • 来自专栏DotNet NB && CloudNative

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 介绍)--学习笔记

    配置连接字符串并且注入 DbContext 使用 DbContext 完成数据查询与插入 创建实体 Entity namespace LighterApi.Data { public class } } EnumTaskStauts namespace LighterApi.Share { public class EnumTaskStauts { } } 创建 DbContext LighterDbContext namespace LighterApi.Data { public class LighterDbContext : DbContext { services.AddControllers(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); 使用 DbContext 完成数据查询与插入 初始化数据库 ,注意在初始化以前确保正确配置了连接字符串,并且在startup.cs中添加了DbContext的注入 // 安装dotnet tool ef工具 dotnet tool

    1.2K11发布于 2020-12-27
  • 来自专栏wfaceboss

    新的方法(Set<T>)实现mvc的crud

    System.Data.Entity; using System.Data.Entity.Infrastructure; public partial class MyContext : DbContext dbContext = new MyContext(); //由父类指向子类 实例化生成数据库 Set<>方法产生的是一个集合 // GET: /UserInfoCrud/ public ActionResult Index() { var list = dbContext.Set<UserInfo>(); <UserInfo>().Add(userInfo); int result = dbContext.SaveChanges();//如果内存中的数据发生了变化,并且希望将这个变化映射到数据库 <UserInfo>().AddOrUpdate(userInfo); int result = dbContext.SaveChanges(); if

    63320发布于 2019-04-08
领券