EntityFramework是方便C#和数据库交互的库。
DbContext
我们继承DbContext弄一个类,构造函数输入数据库的连接字符串。
DbSet<>
DbContext里声明几个DbSet<>,可以使用.ToList()转换成列表。DbSet<>.ToString()得到使用的sql语句。
Entity类
要加Table("表名")特性。
主键加Key特性。
不指定表名会触发Code First模式,也就是C#找不到表就自己建一个。
增
cs
MyEntity entity=new MyEntity();
using (MyDBContext myDBContext = new(LearnDB.conStr))
{
myDBContext.entities.Add(entity);
myDBContext.SaveChanges();
}
删
cs
using (MyDBContext myDBContext = new(LearnDB.conStr))
{
var entity= myDBContext.entities.FirstOrDefault(e => e.UserName == userName);
myDBContext.entities.Remove(entity);
myDBContext.SaveChanges();
}
查:DbSet<>.Where()
cs
public void SearchByUserName(string userName)
{
using (MyDBContext myDBContext = new(LearnDB.conStr))
{
var data = myDBContext.AccountEntities.FirstOrDefault(e => e.UserName == userName);
}
}
查全部
cs
using (MyDBContext myDBContext = new(LearnDB.conStr))
{
var data = myDBContext.AccountEntities.ToList();
Console.WriteLine(data.Count);
foreach (var entity in data)
{
Console.WriteLine(entity.UserName);
}
}
改
cs
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。
