如何使用NHibernate映射没有setter且没有后备属性的属性?

时间:2010-06-22 17:52:27

标签: nhibernate fluent-nhibernate nhibernate-mapping

假设我有以下实体:

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

3 个答案:

答案 0 :(得分:5)

我发现在Fluent NHibernate中使用此映射的方法是简单地添加Access属性:

Map(x => x.CalculatedAmount).Access.ReadOnly();

答案 1 :(得分:2)

我不使用Fluent,但在映射中,没有setter的持久化属性与access="readonly"映射,所以请查找类似.Readonly()

的内容

(Readonly来自模型透视图;值被写入数据库并用于脏检查)

答案 2 :(得分:0)

看起来这是一个计算值。如果您可以在任何给定时间计算此值,那么为什么要存储它?