请问关于c的具体应用场景有哪些?

2026-04-29 03:203阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计301个文字,预计阅读时间需要2分钟。

请问关于c的具体应用场景有哪些?

我想在实体和相关数据中检测发生的变化。我知道如何获取实体中已更改的属性名称:使用 `dbContext.Entry(entity).Properties.Where(x=> x.IsModified).Select(x=> x.Metadata.Name).ToList();`。如何检测导航属性的变化?

我想在实体和附加到它的相关数据中发生变化.

我知道如何获取一个实体中已更改的属性名称:

请问关于c的具体应用场景有哪些?

dbContext.Entry(entity).Properties.Where(x => x.IsModified).Select(x => x.Metadata.Name).ToList();

如何对导航属性中的相关数据执行相同操作?

基于此 article (Entity Change Tracking using DbContext in Entity Framework 6),您应该重写SaveChanges()方法以跟踪实体更改及其相关实体.

public override int SaveChanges() { return base.SaveChanges(); }

实际上,您应该将上面的代码更改为以下示例:

public override int SaveChanges() { var modifiedEntities = ChangeTracker.Entries() .Where(p => p.State == EntityState.Modified).ToList(); var now = DateTime.UtcNow; foreach (var change in modifiedEntities) { var entityName = change.Entity.GetType().Name; var primaryKey = GetPrimaryKeyValue(change); foreach(var prop in change.OriginalValues.PropertyNames) { var originalValue = change.OriginalValues[prop].ToString(); var currentValue = change.CurrentValues[prop].ToString(); if (originalValue != currentValue) //Only create a log if the value changes { //Create the Change Log } } } return base.SaveChanges(); }

本文共计301个文字,预计阅读时间需要2分钟。

请问关于c的具体应用场景有哪些?

我想在实体和相关数据中检测发生的变化。我知道如何获取实体中已更改的属性名称:使用 `dbContext.Entry(entity).Properties.Where(x=> x.IsModified).Select(x=> x.Metadata.Name).ToList();`。如何检测导航属性的变化?

我想在实体和附加到它的相关数据中发生变化.

我知道如何获取一个实体中已更改的属性名称:

请问关于c的具体应用场景有哪些?

dbContext.Entry(entity).Properties.Where(x => x.IsModified).Select(x => x.Metadata.Name).ToList();

如何对导航属性中的相关数据执行相同操作?

基于此 article (Entity Change Tracking using DbContext in Entity Framework 6),您应该重写SaveChanges()方法以跟踪实体更改及其相关实体.

public override int SaveChanges() { return base.SaveChanges(); }

实际上,您应该将上面的代码更改为以下示例:

public override int SaveChanges() { var modifiedEntities = ChangeTracker.Entries() .Where(p => p.State == EntityState.Modified).ToList(); var now = DateTime.UtcNow; foreach (var change in modifiedEntities) { var entityName = change.Entity.GetType().Name; var primaryKey = GetPrimaryKeyValue(change); foreach(var prop in change.OriginalValues.PropertyNames) { var originalValue = change.OriginalValues[prop].ToString(); var currentValue = change.CurrentValues[prop].ToString(); if (originalValue != currentValue) //Only create a log if the value changes { //Create the Change Log } } } return base.SaveChanges(); }