5.Entity Framework Core CRUD

1.实体状态

数据库上下文会跟踪内存中的实体并设置该实体的状态,从而决定调用 SaveChanges 方法时发出的SQL命令,最终实现与数据库中相应的行同步。

状态SaveChanges方法
AddedSQL INSERT 命令
Unchanged不需要通过 SaveChanges 方法对此实体执行操作。从数据库读取实体时,实体将从此状态开始。
ModifiedSQL UPDATE 命令
DeletedSQL DELETE 命令
Detached数据库上下文未跟踪该实体。

2.增删改查

//查询所有
_context.Students.ToListAsync();
//查询单个(可调用Include)
_context.Students.FirstOrDefaultAsync(m => m.ID == id);
//查询单个(性能更优,不可调用Include)
_context.Students.FindAsync(id);
//增加
_context.Add(student); 
//更改所有列
_context.Update(student); 

//仅更改已更新的列
TryUpdateModelAsync<Student>(
    studentToUpdate,
    "",
    s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate)
//删除
_context.Students.Remove(student); 

3.防止过多发布(OverPost)

//Create场景:Bind特性
[Bind("ID,EnrollmentDate,FirstMidName,LastName")]
//Edit场景:TryUpdateModelAsync方法
//首先从数据库读取实体
var studentToUpdate = await _context.Students.FirstOrDefaultAsync(s => s.ID == id);
//然后调用TryUpdateModel
TryUpdateModelAsync<Student>(
    studentToUpdate,
    "",
    s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate)

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/entityframeworkcore/15180.html

(0)
上一篇 2022年6月4日 22:51
下一篇 2022年6月6日 15:34

相关推荐

  • 3.Entity Framework Core关系

    1.实体与属性 默认情况下,如果在类型上发现导航属性,将创建关系。 如果它指向的类型不能由当前数据库提供程序映射为标量类型,则属性被视为导航属性。 1.1主体实体 主体实体是指包含主体键/备选键属性的实体。有时被称为关系的“父级”。 1.2依赖实体 依赖实体是指包含外键属性的实体。有时被称为关系的“子级”。 1.3主体…

  • 1.语言集成查询(Language-Integrated Query,LINQ)

    语言集成查询(Language-Integrated Query,LINQ)是一系列直接将查询功能集成到 C# 语言的技术统称。 随着时间的推移,人们已经为各种数据源开发了不同的语言,例如,用于关系数据库的 SQL 和用于 XML 的 XQuery。 因此,开发人员对于它们必须支持的每种数据源或数据格式,都不得不学习一…

  • 2.Entity Framework Core步骤

    1.安装依赖包 从工具菜单中选择NuGet包管理器–程序包管理器控制台 (PMC)。 2.新建实体模型 右键单击Models文件夹-添加–类-名称单数Student.cs。 3.创建数据库上下文 在项目文件夹中,创建名为 Data 文件夹,在 Data 文件夹中,创建 SchoolCo…

发表评论

登录后才能评论