C#项目怎么集成EF Core C#集成EF Core完整步骤

发布时间 - 2025-12-29 00:00:00    点击率:
需安装Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Tools及对应数据库提供程序包;定义实体类与继承DbContext的上下文类;通过Add-Migration和Update-Database执行迁移;依赖注入使用DbContext并注意Scoped生命周期。

安装EF Core相关NuGet包

在Visual Studio中右键项目 → 选择“管理NuGet包” → 切换到“浏览”选项卡,依次安装以下核心包:

  • Microsoft.EntityFrameworkCore(EF Core基础运行时)
  • Microsoft.EntityFrameworkCore.Tools(支持迁移命令,如Add-MigrationUpdate-Database
  • 对应数据库的提供程序,例如:
      • SQL Server: Microsoft.EntityFrameworkCore.SqlServer
      • SQLite: Microsoft.EntityFrameworkCore.Sqlite
      • PostgreSQL: Npgsql.EntityFrameworkCore.PostgreSQL

定义实体类和DbContext

创建一个或多个表示数据表的C#类(实体),例如:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
}

再新建一个继承自DbContext的类,用于管理实体和数据库连接:

public class AppDbContext : DbContext
{
    public DbSet Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlServer("YourConnectionStringHere");
}

推荐方式是把连接字符串抽离到appsettings.json,并在Program.cs中注册上下文:

builder.Services.AddDbContext(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")))

添加并应用迁移

打开“程序包管理器控制台”(PMC),确保默认项目选中你的主项目,然后执行:

  • Add-Migration InitialCreate —— 生成首次迁移文件(含建表SQL)
  • Update-Database —— 将迁移应用到数据库,自动创建数据库和表

后续模型变更时,重复执行这两步即可。迁移文件会保存在项目中的Migrations文件夹里,可手动检查生成的SQL逻辑。

在代码中使用DbContext

通过依赖注入获取AppDbContext实例,进行增删改查操作:

var product = new Product { Name = "Laptop", Price = 999.99m };
context.Products.Add(product);
await context.SaveChangesAsync(); // 异步保存

var products = await context.Products.ToListAsync(); // 查询全部

注意:DbContext应按作用域生命周期注册(AddDbContext默认即为Scoped),避免跨请求复用或手动new实例。

基本上就这些。不复杂但容易忽略配置位置和生命周期管理。


# js  # json  # app  # ai  # microsoft  # sqlserver  # c#  # 作用域  # c#类  # sql  # 字符串  # 继承  # visual studio  # sqlite  # database  # postgresql  # 数据库  # 程序包  # 首次  # 多个  # 右键  # 并在  # 实体类  # 管理器  # 两步  # 即为  # 创建一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 魔毅自助建站系统:模板定制与SEO优化一键生成指南  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  Swift开发中switch语句值绑定模式  JS经典正则表达式笔试题汇总  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  企业网站制作这些问题要关注  Laravel如何使用模型观察者?(Observer代码示例)  Python正则表达式进阶教程_复杂匹配与分组替换解析  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Bootstrap整体框架之JavaScript插件架构  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  实例解析angularjs的filter过滤器  Laravel如何实现文件上传和存储?(本地与S3配置)  如何在云主机上快速搭建网站?  海南网站制作公司有哪些,海口网是哪家的?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何破解联通资金短缺导致的基站建设难题?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Linux系统命令中screen命令详解  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  js代码实现下拉菜单【推荐】  Laravel怎么判断请求类型_Laravel Request isMethod用法  如何确保FTP站点访问权限与数据传输安全?  JS实现鼠标移上去显示图片或微信二维码  如何快速启动建站代理加盟业务?  如何在云虚拟主机上快速搭建个人网站?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  html如何与html链接_实现多个HTML页面互相链接【互相】  jQuery 常见小例汇总  如何在腾讯云服务器快速搭建个人网站?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  高防服务器如何保障网站安全无虞?  Laravel如何处理异常和错误?(Handler示例)  如何在万网自助建站中设置域名及备案?  Java垃圾回收器的方法和原理总结  在centOS 7安装mysql 5.7的详细教程  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何自定义建站之星网站的导航菜单样式?  Python文件流缓冲机制_IO性能解析【教程】  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Laravel安装步骤详细教程_Laravel环境搭建指南  如何用VPS主机快速搭建个人网站?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel中的withCount方法怎么高效统计关联模型数量  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  高防服务器租用首荐平台,企业级优惠套餐快速部署