在 EF Core 中 Book 实体在新增、修改、删除时,给 LastUpdated 字段赋值。
直接贴代码:
public class MenusContext : DbContext
{
public static class ColumnNames
{
public const string LastUpdated = nameof(LastUpdated);
} private const string ConnectionString = @"server=(localdb)\mssqllocaldb;database=Restaurant1;trusted_connection=true"; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) =>
optionsBuilder.UseSqlServer(ConnectionString); protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// shadow state
modelBuilder.Entity<MenuItem>().Property<DateTime>(LastUpdated); modelBuilder.Entity<MenuItem>().Property(m => m.Text).IsRequired().HasMaxLength(); // use anonymous types to pass shadow state information
modelBuilder.Entity<MenuItem>().HasData(
new { MenuItemId = , Text = "Wiener Schnitzel mit Kartoffelsalat", MenuDate = new DateTime(, , ), LastUpdated = DateTime.Now },
new { MenuItemId = , Text = "Faschierter Braten mit Karoffelpüree", MenuDate = new DateTime(, , ), LastUpdated = DateTime.Now });
} public DbSet<MenuItem> MenuItems { get; set; } public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
{
ChangeTracker.DetectChanges(); foreach (var item in ChangeTracker.Entries<Book>()
.Where(e => e.State == EntityState.Added || e.State == EntityState.Modified || e.State == EntityState.Deleted))
{
item.CurrentValues[LastUpdated] = DateTime.Now;
} return base.SaveChangesAsync(cancellationToken);
} public override int SaveChanges() => SaveChangesAsync().Result;
}
请注意代码:
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
{
ChangeTracker.DetectChanges(); foreach (var item in ChangeTracker.Entries<Book>()
.Where(e => e.State == EntityState.Added || e.State == EntityState.Modified || e.State == EntityState.Deleted))
{
item.CurrentValues[LastUpdated] = DateTime.Now;
} return base.SaveChangesAsync(cancellationToken);
}
在 EF Core 中 Book 实体在新增、修改、删除时,给 LastUpdated 字段赋值。的更多相关文章
- EF Core扩展工具记录 批量操作 记录修改删除历史 动态linq
Microsoft.EntityFrameworkCore.UnitOfWork Microsoft.EntityFrameworkCore的插件,用于支持存储库,工作单元模式以及支持分布式事务 ...
- EF Core中如何通过实体集合属性删除从表的数据
假设在数据库中有两个表:Person表和Book表,Person和Book是一对多关系 Person表数据: Book表数据: 可以看到数据库Book表中所有的数据都属于Person表中"F ...
- EF Core 中DbContext不会跟踪聚合方法和Join方法返回的结果,及FromSql方法使用讲解
EF Core中: 如果调用Queryable.Count等聚合方法,不会导致DbContext跟踪(track)任何实体. 此外调用Queryable.Join方法返回的匿名类型也不会被DbCont ...
- EF Core中如何正确地设置两张表之间的关联关系
数据库 假设现在我们在SQL Server数据库中有下面两张表: Person表,代表的是一个人: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ...
- [小技巧]EF Core中如何获取上下文中操作过的实体
原文地址:https://www.cnblogs.com/lwqlun/p/10576443.html 作者:Lamond Lu 源代码:https://github.com/lamondlu/EFC ...
- EF Core 中多次从数据库查询实体数据,DbContext跟踪实体的情况
使用EF Core时,如果多次从数据库中查询一个表的同一行数据,DbContext中跟踪(track)的实体到底有几个呢?我们下面就分情况讨论下. 数据库 首先我们的数据库中有一个Person表,其建 ...
- EF Core中怎么实现自动更新实体的属性值到数据库
我们在开发系统的时候,经常会遇到这种需求数据库表中的行被更新时需要自动更新某些列. 数据库 比如下面的Person表有一列UpdateTime,这列数据要求在行被更新后自动更新为系统的当前时间. Pe ...
- EF Core中避免贫血模型的三种行之有效的方法(翻译)
Paul Hiles: 3 ways to avoid an anemic domain model in EF Core 1.引言 在使用ORM中(比如Entity Framework)贫血领域模型 ...
- EF Core中的多对多映射如何实现?
EF 6.X中的多对多映射是直接使用HasMany-HasMany来做的.但是到了EF Core中,不再直接支持这种方式了,可以是可以使用,但是不推荐,具体使用可以参考<你必须掌握的Entity ...
随机推荐
- GO 键盘输入和打印输出
键盘输入和打印输出 一.打印输出 1.1 fmt包 fmt包实现了类似C语言printf和scanf的格式化I/O.格式化verb('verb')源自C语言但更简单. 详见官网fmt的API:http ...
- Token ,Cookie、Session傻傻分不清楚?
作者 | 王菜鸟1993 来源 | cnblogs.com/JamesWang1993/p/8593494.html 在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对to ...
- MVC教程:授权过滤器
一.过滤器 过滤器(Filter)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,并不是每个请求都会响应内容,只有那些有特定权限的用户才能响应特定的内容.过滤器理论上 ...
- python基础(22):模块、包
1. 模块 1.1 什么是模块 别人写好的函数.变量.方法放在一个文件里 (这个文件可以被我们直接使用)这个文件就是个模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模 ...
- python中反转列表的三种方式
1.内建函数reversed() li =[1, 2, 3, 4, 5, 6] a = list(reversed(li)) print (a) 注意:reversed()函数返回的是一个迭代器,而不 ...
- python数据可视化简介(一)
目录 一:配置jupyter notebook 二:Matplotlib图像实例 数据可视化是用图形或者表格的形式进行数据显示,用图形化的手段,清晰有效地传递与沟通信息.既要保证直观易分析,又要保 ...
- sharepointOnline的外接应用创建
#CODE STARTS HERE $programFiles = [environment]::getfolderpath("programfiles") add-type -P ...
- 微信小程序踩坑日记3——上传照片至服务器
0. 引言 主要解决将小程序端获取的图片保存在服务器上.亲测可用的服务端脚本. 1. 获取照片 通过wx.chooseImage()方法,获取到图片,使用wx.uploadFile()上传图片. wx ...
- Docker安装并运行mysql5.6数据库
1.在/home目录下新建mysql目录 mysql目录中新建三个目录:conf目录.logs目录.data目录,建这些目录的目的是用来挂载docker中的mysql下的目录的. 结果如下: 1.1. ...
- springboot-配置多个数据源
1.创建一个datasource包,新建DataSource1,DataSource2两个文件,通过注解来配置数据源 DataSource1: package com.springboot.datas ...