在 EF Core 中 Book 实体在新增、修改、删除时,给 LastUpdated 字段赋值。
2019-06-30 15:33 音乐让我说 阅读(388) 评论(0) 编辑 收藏 举报直接贴代码:
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(40); // use anonymous types to pass shadow state information modelBuilder.Entity<MenuItem>().HasData( new { MenuItemId = 1, Text = "Wiener Schnitzel mit Kartoffelsalat", MenuDate = new DateTime(2018, 8, 27), LastUpdated = DateTime.Now }, new { MenuItemId = 2, Text = "Faschierter Braten mit Karoffelpüree", MenuDate = new DateTime(2018, 8, 28), 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); }
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步