09_EntityFrameworkCore 6 简单使用
1. 首先我们先用vs2022 创建一个WebAPI
添加安装包:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
2.添加一个类用于测试
/// <summary> /// 用户信息 /// </summary> public class UserInfo { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } public string Password { get; set; } public string Username { get; set; } }
3.创建一个Context类,需要继承DbContext
public class EfContext : DbContext { public EfContext(DbContextOptions<EfContext> options) : base(options) { } public DbSet<UserInfo> UserInfo { get; set; } /* protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);//加载程序集配置 } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); string _sql = "server=LAPTOP;uid=sa;pwd=123456;database=EFCore_Db"; optionsBuilder.UseSqlServer(_sql); } */ }
4.配置appsettings.json
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "ServerSql": "server=LAPTOP;uid=sa;pwd=123456;database=EFCore_Db", "MySql": "" } }
5.Program.cs注册EfContext,有两种方式
#region EfContext builder.Services.AddDbContext<EfContext>(p => { p.UseSqlServer(builder.Configuration.GetConnectionString("ServerSql")); });
//通过工厂方式 builder.Services.AddDbContextFactory<EfContext>(p => { p.UseSqlServer(builder.Configuration.GetConnectionString("ServerSql")); }); #endregion
6.生产项目后在管理器控制台内 分别执行:Add-Migration 和 Update-Database
常用的一些命令:
Add-Migration 添加新的迁移 Drop-Database 删除数据库 Get-DbContext 获取有关DbContext类型的信息 Remove-Migration 删除上一次迁移 Scaffold-DbContext 搭建数据库的DbContext和实体类型 Script-Migration 从迁移生成SQL脚本 Update-Database 将数据库更新为指定的迁移
7.测试(实现增删改查)
[Route("api/[controller]/[action]")] [ApiController] public class UserController : ControllerBase { private EfContext _efContext; private IDbContextFactory<EfContext> _dbContext;//通过工厂方式 public UserController( EfContext efContext, IDbContextFactory<EfContext> dbContext) {this._efContext = efContext; _dbContext = dbContext; } /// <summary> /// 添加用户信息 /// </summary> /// <returns></returns> [HttpPost] public UserInfo AddUserInfo() { UserInfo userInfo = new UserInfo() { Name = "李四", Email = "1234@qq.com", Password = "123456", Username = "小四" }; var res = _efContext.UserInfo.Add(userInfo); _efContext.SaveChanges(); _efContext.Dispose(); return userInfo; } /// <summary> /// 查询用户信息 /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpPost] public List<UserInfo> GetUerInfo(int id) { List<UserInfo> userInfos = new List<UserInfo>(); var res = _efContext.UserInfo.Where(p => p.Id == id); foreach (var item in res) { userInfos.Add(item); } _efContext.Dispose(); using (var dbx = _dbContext.CreateDbContext()) { UserInfo? info = dbx.UserInfo.FirstOrDefault(p => p.Id == id); userInfos.Add(info); } return userInfos; } /// <summary> /// 修改用户信息 /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpPost] public UserInfo UpdateUerInfo(int id, string uName) { var res = _efContext.UserInfo.FirstOrDefault(p => p.Id == id); res.Username = uName; _efContext.UserInfo.Update(res); _efContext.SaveChanges(); _efContext.Dispose(); return res; } /// <summary> /// 删除用户信息 /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpPost] public UserInfo DeleteUerInfo(int id) { var res = _efContext.UserInfo.FirstOrDefault(p => p.Id == id); _efContext.UserInfo.Remove(res); _efContext.SaveChanges(); _efContext.Dispose(); return res; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)