首页
学习
活动
专区
圈层
工具
发布

手把手教你用.NET修仙:三天炼化EFCore

序、修真者的数据库之道

在.NET的浩瀚宇宙中,EFCore犹如一门高深心法,助我以面向对象之道驾驭数据库之力。今日起,记录我的筑基之旅!

一、建立灵根(DbContext)

public class CultivationDbContext:DbContext

{

  // 修士名录

  public DbSet<Cultivator> Cultivators{ get; set;}

  // 功法秘籍

  public DbSet<Technique> Techniques{ get; set;}

  protected override void OnConfiguring(

      DbContextOptionsBuilder options)

  {

      // 连接本地数据库

      options.UseSqlite("Data Source=cultivation.db");

  }

}

修真要点:

DbContext是沟通天地灵气的桥梁

DbSet代表修真界的各种实体集合

配置数据库连接如同选择修炼福地

🧙‍二、凝练实体(Entity)

public class Cultivator

{

  public int Id{ get; set;}// 修士ID(自动生成)

  public string Name{ get; set;}// 道号

  public int RealmLevel{ get; set;}// 境界

  publicList<Technique>Techniques{ get; set;}// 掌握功法

}

public class Technique

{

  public int Id{ get; set;}// 功法ID

  public string Name{ get; set;}// 功法名称

  public int CultivatorId{ get; set;}// 所属修士ID

  public Cultivator Cultivator{ get; set;}// 修士导航属性

}

属性注释:

Id:自动成为主键(PK)

导航属性:实体间的关系纽带

外键:CultivatorId自动关联修士表

三、迁移大法(Migration)

# 安装EFCore神通

dotnet tool install --global dotnet-ef

# 创建初始迁移(相当于绘制藏宝图)

dotnet ef migrations add InitialCreate

# 应用迁移(开辟洞天福地)

dotnet ef database update

修真提示:

每次修改实体后都需要创建新迁移

迁移文件记录了数据库的演变历史

团队开发时需共享迁移文件

四、CRUD四字真诀

增(Create)

var newCultivator =newCultivator

{

  Name="韩立",

  RealmLevel=1

};

context.Cultivators.Add(newCultivator);

context.SaveChanges();// 灵气灌注

查(Read)

var goldenCore = context.Cultivators

.Where(c=> c.RealmLevel>=3)

.OrderBy(c=> c.Name)

.ToList();// 筛选金丹期以上修士

改(Update)

var cultivator = context.Cultivators.Find(1);

cultivator.RealmLevel=4;// 突破境界

context.SaveChanges();

删(Delete)

var failed = context.Cultivators.Find(2);

context.Remove(failed);// 逐出师门

context.SaveChanges();

五、关系修炼之道

一对多关系(修士-功法)

// 添加功法

var hanli = context.Cultivators.First();

hanli.Techniques.Add(new Technique{Name="青元剑诀"});

// 查询带功法的修士

var masters = context.Cultivators

.Include(c=> c.Techniques)// 显式加载

.ToList();

多对多关系(修士-门派)

// 通过中间实体实现

public class CultivatorSect

{

  public int CultivatorId{ get; set;}

  public int SectId{ get; set;}

  // 其他属性...

}

完、筑基成功!

经过七日苦修,已掌握EFCore基础心法:

创建DbContext灵根

定义实体模型

运用迁移大法

熟练CRUD操作

理解关系映射

进阶预告

LINQ高阶查询(相当于神识扫描)

性能优化技巧(灵气运转法门)

事务管理(护山大阵布置)

道友交流区(留言留下你的问题)

Q: 为什么我的迁移总是失败?

A: 检查实体定义是否合理,删除旧迁移重新尝试

Q: Include和ThenInclude有什么区别?

A: Include加载直接关联实体,ThenInclude加载嵌套关联实体

修真箴言:

"代码如修行,EFCore似心法,唯有勤加练习,方能证得大道!"

点赞收藏,助我突破境界瓶颈!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OCa10XqIjPGPrOGfnl5lT9zg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券