我有以下带有计算/计算列的实体:
public EntityA
{
[Key(), Required]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
.....
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public virtual string RefId {
get
{
return this.Id.ToString().PadLeft(7, '0');
}
private set
{
}
}
}
RefId 是一个取决于 Id 值的计算列。
使用 SaveChanges 对数据库执行提交更改后,我可以检查当前在数据库中插入的实体的 Id 和 RefId 是否已正确设置,但是如果我打开数据库并检查该实体的 RefId 列,我可以观察到 RefId 列已如果数字为 NULL,则未设置。为什么?有任何想法吗?
DatabaseGeneratedOption.Computed
意味着该值是由数据库引擎计算的。所以EF永远不会更新这个值,只会从数据库中读取。
因此,如果您希望在数据库中使用该值:
- 消除DatabaseGeneratedOption.Computed
并在代码中设置该值,或者
- 在数据库引擎端设置计算列。
否则,您应该将 RefId 设置为未映射。但在这种情况下,数据库中将没有列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)