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

相关推荐
Seraphina367 小时前
SQL注入(二)盲注
网络·数据库·经验分享·笔记·sql
疯狂的维修8 小时前
关于用C#写电机起保停控制
开发语言·c#
盟接之桥8 小时前
AI助手:你的7×24小时智能管家——让异常预警无处不在
大数据·网络·数据库·人工智能·制造·ai编程
waoooqwe8 小时前
问卷样本真实吗
大数据·数据库·算法·数据分析
可乐ea9 小时前
Agent 评测换判据:用终态数据库状态判定任务是否完成
数据库·ui·oracle·mcp工具·agent评测·终态断言·智能体可靠性
l1t9 小时前
DeepSeek总结的一个不含数据的 DuckDB 数据库
服务器·数据库·duckdb
PaperData10 小时前
2007-2020年税收调查面板数据
数据库
程序员清风10 小时前
CSV、Excel 与数据库数据读取实践
数据库·oracle·excel
GEO实战经验分享11 小时前
GEO技术与工具全景:从监测仪表盘到Schema的实战指南
数据库
一个天蝎座的程序猿11 小时前
IoTDB集群扩容:从慌乱到从容的经验分享
数据库