如何防止EF Core 3.1中的列更新? [英] How to prevent a column update in EF Core 3.1?
本文介绍了如何防止EF Core 3.1中的列更新?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已从.Net Core 2.2升级到3.1,并且不赞成使用此功能
I upgraded from .Net Core 2.2 to 3.1 and this functionality has been deprecated
modelBuilder
.Entity<Order>()
.Property(e => e.CreationTime)
.ValueGeneratedOnAddOrUpdate()
.Metadata.IsStoreGeneratedAlways = true;
我需要EF来执行插入操作,但阻止更新。
I need EF to do the Insert but block the update.
谢谢!
推荐答案
根据废弃的属性实现:
public virtual bool IsStoreGeneratedAlways
{
get => AfterSaveBehavior == PropertySaveBehavior.Ignore || BeforeSaveBehavior == PropertySaveBehavior.Ignore;
set
{
if (value)
{
BeforeSaveBehavior = PropertySaveBehavior.Ignore;
AfterSaveBehavior = PropertySaveBehavior.Ignore;
}
else
{
BeforeSaveBehavior = PropertySaveBehavior.Save;
AfterSaveBehavior = PropertySaveBehavior.Save;
}
}
}
等效代码应设置 BeforeSaveBehavior
和 AfterSaveBehavior
到忽略
。
自 BeforeSaveBehavior
和 AfterSaveBehavior
属性也被替换为获取
/ Set
方法对,则需要引入一个临时变量来保存属性元数据。
Also since BeforeSaveBehavior
and AfterSaveBehavior
properties have been replaced with Get
/ Set
method pairs, it would require introducing a temporary variable to hold the property metadata.
类似这样的东西:
var creationTime = modelBuilder
.Entity<Order>()
.Property(e => e.CreationTime)
.ValueGeneratedOnAddOrUpdate()
.Metadata;
creationTime.SetBeforeSaveBehavior(PropertySaveBehavior.Ignore);
creationTime.SetAfterSaveBehavior(PropertySaveBehavior.Ignore);
这篇关于如何防止EF Core 3.1中的列更新?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文