C# EntityFramework笔记

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。

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

相关推荐
csdn_aspnet1 小时前
mysql 查询树形,id与pid关联
数据库·mysql·tree·树形
thisiszdy1 小时前
<C++&C#> lambda表达式
java·c++·c#
郝学胜-神的一滴1 小时前
系统设计 014:缓存深度实战:如何用 Cache 优雅优化数据库读写?
java·数据库·python·缓存·oracle·php·软件构建
点灯小铭1 小时前
基于单片机的智能一体化自动咖啡机设计
数据库·单片机·毕业设计·课程设计·期末大作业
JdSnE27zv1 小时前
数据库表字段命名规范
数据库·oracle
隔窗听雨眠2 小时前
ORM框架选型指南:MyBatis与Hibernate的全面对比
java·开发语言·数据库
tedcloud1232 小时前
Dolt部署教程:打造可追踪数据变更的数据库环境
服务器·数据库·人工智能·学习·自动化·powerpoint
叶帆2 小时前
【YFIOs】用C#开发硬件之串口通信
开发语言·c#
数据库小学妹2 小时前
MySQL 误删数据恢复全流程:Binlog 回放+全量备份+延迟从库三种方案实战
数据库·经验分享·mysql·dba