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_1
和 sub_total_2
的总和。如果子属性在从数据库中检索后已更新,您可以找到绕过此检查的另一种方法,但这是您正在做的事情的良好开端。
休闲属性是在 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_1
和 sub_total_2
的总和。如果子属性在从数据库中检索后已更新,您可以找到绕过此检查的另一种方法,但这是您正在做的事情的良好开端。