ASP.Net 首先是 MVC 代码。如何强制将 get only 属性存储在数据库中?

ASP.Net MVC code first. How force a get only attrubute to be stored on db?

休闲属性是在 POCO class 上定义的。

public int total { get{ return sub_total_1 + sub_total_2; }}

添加新迁移时,不会在 table 上创建或存储此属性。

我尝试添加 [Column("Total")] 注释但没有成功。

是否可以将此属性作为 "cache" 存储在数据库中以供将来查询?

谢谢。

要让 EF 能够监控 属性,它需要有 public (1) getter 和 setter.

对于您正在做的事情,除非您需要在数据库中进行某些操作,否则您只需将其作为只读 属性 保留在您的 Poco class 中就可以了。将两个整数相加的操作根本不存在性能问题,而且从数据库中推送和拉取的速度可能会更慢。

(1)setter可以是protected internal,如果你想"read only"除了数据库。

作为如何将该值存储在数据库中以进行缓存的示例,您可以这样做:

private int? total;
public int Total
{
    get
    {
        return total ?? sub_total_1 + sub_total_2;
    }
    protected internal set
    {
        total = value;
    }
}

在此示例中,新的 private total 变量将存储数据库中的内容。它可以为空,因此如果未从数据库中检索到它,则默认为 sub_total_1sub_total_2 的总和。如果子属性在从数据库中检索后已更新,您可以找到绕过此检查的另一种方法,但这是您正在做的事情的良好开端。