所以我認為答案是:
modelBuilder.Entity<MyObject>(builder =>
{
builder.Property(e => e.Prop7).Metadata.AfterSaveBehavior = PropertySaveBehavior.Ignore;
builder.Property(e => e.Prop8).Metadata.AfterSaveBehavior = PropertySaveBehavior.Ignore;
builder.Property(e => e.Prop9).Metadata.AfterSaveBehavior = PropertySaveBehavior.Ignore;
});
但是我該如何動態地做到這一點?我如何在需要時阻止EF核心進行更新,並在大多數情況下允許其像往常一樣進行更新。
您可以將PropertyEntry.IsModified
設置為false
,這將重置屬性的值。
var myObject = ctx.MyObjects.First(); // e.g. myObject.Foo is "foo" in the database
myObject.Foo = "bar";
ctx.Entry(myObject).Property(o => o.Foo).IsModified = false;
// at this point, myObject.Foo is reset to "foo"