首先更新nhibernate代码中的计算列
本文关键字:计算 代码 更新 nhibernate | 更新日期: 2023-09-27 18:26:50
我首先使用nhibernate代码,我有一个计算列。
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public virtual bool? IsInternal { get; set; }
当我尝试更新我的对象时,我收到一个错误:无法修改列"IsInternal",因为它是计算列或是UNION运算符的结果。
我应该在属性映射上将update和insert设置为false,这将解决这个问题
public virtual bool? IsInternal { get; set; }
Map.Property(p => p.IsInternal, u =>
{
u.Update(false);
u.Insert(false);
});
计算列不需要任何更新(在大多数情况下,不持久化)。它总是在需要的时候快速计算。这就是您出现此错误的原因。
根据MSDN:
计算列是未物理存储在中的虚拟列表,,除非该列标记为PERSISTED。计算列表达式可以使用其他列中的数据来计算它所属的列。可以为使用SQL Server管理在SQL Server 2016中计算列Studio或Transact-SQL。