在我的模型中,我具有AccountType属性,该属性主要由数据库触发器生成,但有时也可以直接分配:
public class Account
{
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int AccountType { get; set; }
}
[databaseGenerated]属性使我可以在执行databaseContext.SaveChanges()时自动获取数据库生成的值。 但是,如果出现以下情况,此属性似乎也无法发送值: 我希望明确分配AccountType。实现这种“部分”生成/计算列的最佳方法是什么?
答案 0 :(得分:0)
但是,如果我希望显式分配AccountType,则该属性似乎也无法发送值。实现这种“部分”生成/计算列的最佳方法是什么?
如果要为用[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
装饰的属性设置显式值,则需要下拉至较低级别的元数据API并按如下所示设置AfterSaveBehavior
/ BeforeSaveBehavior
: / p>
IMutableProperty.BeforeSaveBehavior Property用于添加状态
modelBuilder.Entity<Test>()
.Property(t => t.TestType)
.Metadata.BeforeSaveBehavior=PropertySaveBehavior.Save;
IMutableProperty.AfterSaveBehavior Property用于更新状态
modelBuilder.Entity<Test>()
.Property(t => t.TestType)
.Metadata.AfterSaveBehavior =PropertySaveBehavior.Save;
PropertySaveBehavior指示实体框架更改跟踪将如何处理对属性值的更改,而实体框架更改跟踪又将确定是否将值集发送到数据库。