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或用户名为条件,查询后修改其中任意的属性,需要有多少个属性就写多少个方法重载?

相关推荐
数聚天成DeepSData7 小时前
遥感农业数据集下载全攻略
数据库·人工智能·深度学习·机器学习·自然语言处理·数据挖掘
一勺菠萝丶8 小时前
生产环境平滑升级实战-Nginx维护页数据库迁移与安全回滚
数据库·nginx·安全
心静自然凉8008 小时前
MySQL主从同步配置(一主一从)
数据库
haidy ahmed8 小时前
企微复杂审批流反序列化:动态表单解析引擎与EAV存储模型
数据库·人工智能·自动化·企业微信
Lihua奏8 小时前
MVCC:为什么多人同时读写数据,数据库还能不乱
数据库
952369 小时前
Redis - 应用
数据库·redis·分布式·缓存
青山木9 小时前
一把 Redis 分布式锁,踩透四个坑:锁争抢、僵尸锁、锁过期、锁丢失
java·数据库·redis·后端
数智化管理手记9 小时前
智能财务如何减少财务加班?智能财务落地需要哪些工具支撑?
大数据·网络·数据库·数据挖掘·精益工程
IvorySQL9 小时前
深度拆解 IvorySQL 去 O 核心解决方案
数据库·人工智能·postgresql
吴声子夜歌9 小时前
Redis 3.x——客户端
数据库·redis