假设我有以下实体:
public class CalculationInfo
{
public virtual Int64 Id { get; set; }
public virtual decimal Amount { get; set; }
public virtual decimal SomeVariable { get; set; }
public virtual decimal SomeOtherVariable { get; set; }
public virtual decimal CalculatedAmount
{
get
{
decimal result;
// do crazy stuff with Amount, SomeVariable and SomeOtherVariable
return result;
}
}
}
基本上我想用NHibernate读取和写入我的数据库中的所有字段,但CalculatedAmount
除外,我只是想写,而不是回读。
每个类似的问题和相应的答案都涉及为该值指定后备存储,在此方案中我将不会这样做。
如何使用Fluent NHibernate完成此操作?
谢谢!
更新:这是我尝试过的,以及它导致的错误:
这是我对该物业的映射......
Map(x => x.CalculatedAmount)
.ReadOnly();
它产生的例外......
找不到类'xxx.CalculationInfo'中属性'CalculatedAmount'的setter
答案 0 :(得分:5)
我发现在Fluent NHibernate中使用此映射的方法是简单地添加Access属性:
Map(x => x.CalculatedAmount).Access.ReadOnly();
答案 1 :(得分:2)
我不使用Fluent,但在映射中,没有setter的持久化属性与access="readonly"
映射,所以请查找类似.Readonly()
(Readonly来自模型透视图;值被写入数据库并用于脏检查)
答案 2 :(得分:0)
看起来这是一个计算值。如果您可以在任何给定时间计算此值,那么为什么要存储它?