C# 通过更改跟踪器获取更改属性的名称

C# 通过更改跟踪器获取更改属性的名称,c#,entity-framework,asp.net-core,entity-framework-core,C#,Entity Framework,Asp.net Core,Entity Framework Core,这就是我所拥有的: var book = myContext.Books.Where(x =>x.ID = bookID).FirstOrDefault(); book.name = "New book name"; myContext.Update(book); if (myContext.Entry(book).State == EntityState.Modified) { foreach(var entry in myContext.ChangeTrac

这就是我所拥有的:

var book = myContext.Books.Where(x =>x.ID = bookID).FirstOrDefault();

book.name = "New book name";
myContext.Update(book);

if (myContext.Entry(book).State == EntityState.Modified) {
  foreach(var entry in myContext.ChangeTracker.Entries()) {
    Console.WriteLine("Entity: {0},  State: {1} ", entry.Entity.GetType()., entry.State.ToString());
  }

  myContext.SaveChanges();

我需要知道更改的属性的名称(name)。有可能吗?

是的,当然有可能,你是这样做的:

var modified = entry.Properties.Where(p=>p.IsModified);
foreach( var prop in modified )
{
       var name = prop.Metadata.Name;
}