C# EntityFramework笔记

📅 2026/8/3 2:31:09 👁️ 阅读次数 📝 编程学习
C# EntityFramework笔记

EntityFramework是方便C#和数据库交互的库。

DbContext

我们继承DbContext弄一个类,构造函数输入数据库的连接字符串。

DbSet<>

DbContext里声明几个DbSet<>,可以使用.ToList()转换成列表。DbSet<>.ToString()得到使用的sql语句。

Entity类

要加[Table("表名")]特性。

主键加[Key]特性。

不指定表名会触发Code First模式,也就是C#找不到表就自己建一个。

查:DbSet<>.Where()

public void SearchByUserName(string userName) { using (MyDBContext myDBContext = new(LearnDB.conStr)) { var data = myDBContext.AccountEntities.FirstOrDefault(e => e.UserName == userName); } }

查全部

using (MyDBContext myDBContext = new(LearnDB.conStr)) { var data = myDBContext.AccountEntities.ToList(); Console.WriteLine(data.Count); foreach (var entity in data) { Console.WriteLine(entity.UserName); } }

public void Update(int Id,string email) { using (MyDBContext myDBContext = new(LearnDB.conStr)) { var data = myDBContext.AccountEntities.FirstOrDefault(e => e.Id ==Id); data.Email =email; myDBContext.SaveChanges(); } }

只能改在这个using区域得到的记录,保存才生效。在其他区域获得的记录想修改生效需要Attach。然后修改状态为Modified。

以Id或用户名为条件,查询后修改其中任意的属性,需要有多少个属性就写多少个方法重载?