序、修真者的数据库之道
在.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似心法,唯有勤加练习,方能证得大道!"
点赞收藏,助我突破境界瓶颈!