在我的 asp.net mvc4 应用程序中,我允许管理员更改各种站点范围,例如站点标题、精选电影、类别、配色方案等。
如何保存这些更改?我应该在数据库中创建一行,包括每个设置作为一列还是?
如果是这样,每次我想显示网站时,我当然需要网站的标题——然后我每次都必须查询数据库来检索标题吗?
在我的 asp.net mvc4 应用程序中,我允许管理员更改各种站点范围,例如站点标题、精选电影、类别、配色方案等。
如何保存这些更改?我应该在数据库中创建一行,包括每个设置作为一列还是?
如果是这样,每次我想显示网站时,我当然需要网站的标题——然后我每次都必须查询数据库来检索标题吗?
按照您的建议,两种可能的方法是在会话中或在数据库中。
会话: 如果此信息不被永久保存,您可以将其存储在服务器端的会话中。根据您设置的策略,用户退出浏览器后信息会消失,这可能不是您想要的。
数据库: 您可以将所有信息存储在每个用户的一行中(userId、设置)。设置可以存储为 xml,也可以存储为单个字符串,如下所示:
<settings>
<title>...</title>
<featuredmovies>
<movie>...</movie>
</featuredmovies>
...
</settings>
您将不得不查询数据库,但这是一个非常便宜的查询,因为您仅根据用户 ID 进行选择。您还可以在检索一次信息后将信息存储在会话中,并且仅在用户更改其设置时更新。这意味着以后每次您需要设置信息时,您都可以从会话中获取它,而不是从非常快的数据库中获取。
编辑:然后您将 xml 解析到您想要的设置服务器端。