7.Entity Framework Core CRUD

1.实体状态

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

实体状态由 DbContext 跟踪SaveChanges操作
Detached————
Unchanged————
AddedINSERT
ModifiedUPDATE
DeletedDELETE

2.增删改查

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

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

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)

4.相关查询

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

(0)
上一篇 2022年6月6日 23:46
下一篇 2022年6月8日 21:31

相关推荐

  • 5.Entity Framework Core特性

    Entity Framework Core特性位于System.ComponentModel.DataAnnotations 命名空间 和 System.ComponentModel.DataAnnotations.Schema 命名空间。 1.System.ComponentModel.DataAnnotations…

  • 4.Entity Framework Core关系

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

  • 6.Entity Framework Core迁移

    迁移文件的格式通常为<timestamp>_PascalName.cs(时间辍精确到秒,比如:20220825221808_InitialCreate.cs),PascalName是任意的,但是为迁移文件使用有意义的名称是有帮助的。 默认情况下,SQL Server Express LocalDB会在 C:/用户…

发表回复

登录后才能评论