休闲属性在POCO类中定义。首先ASP.Net MVC代码。如何强制只有attrubute存储在数据库?
public int total { get{ return sub_total_1 + sub_total_2; }}
当添加新的迁移时,不创建该属性,也不存储在表上。
我试图添加[Column(“Total”)]注释没有成功。
是否可以将此属性存储在数据库中作为未来查询的“缓存”?
谢谢。
休闲属性在POCO类中定义。首先ASP.Net MVC代码。如何强制只有attrubute存储在数据库?
public int total { get{ return sub_total_1 + sub_total_2; }}
当添加新的迁移时,不创建该属性,也不存储在表上。
我试图添加[Column(“Total”)]注释没有成功。
是否可以将此属性存储在数据库中作为未来查询的“缓存”?
谢谢。
对于EF能够监视一个属性,它需要有一个public(1)getter和setter。
对于你正在做的事情,除非你需要它在数据库中进行一些操作,你可以把它作为一个只读属性留在你的Poco类中。将两个整数加在一起的操作根本不是性能上的担心,并且可能会更慢地从数据库中拉出来。
(1)如果您希望它是“只读”(数据库除外),则设置器可以是protected internal
。
至于如何做到店内,在数据库高速缓存的目的值的例子,你可以做这样的事情:
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
的总和。如果子属性在从数据库中检索后更新,您可以在此检查中找到另一种方法,但这对您正在执行的操作来说是一个很好的开始。
这两个整数求和就是一个简单的例子。在这种情况下,任务稍微复杂一些。这就是为什么我想缓存它。 –
但是,数据库操作似乎比这里的任何计算都要慢 –
如果您能够提供您的直接示例,那么这可能会有所帮助。但是,给它一个'public get'和'protected internal set'可能就是你想要的。 – krillgar