【发布时间】:2020-10-18 11:19:52
【问题描述】:
您如何在数据库中存储动态网站设置/设计?
以前,我将它存储在一个看起来像这样的表中:
public class SiteSettings
{
public int Id { get; set; }
public string FooterText { get; set; }
public string CopyrightInformation { get; set; }
public string TextColor { get; set; }
}
在写入数据时,我检查了是否存在记录。如果没有,请创建一个。如果存在,请更新它。换句话说,该表中的记录永远不会超过一条。
读取数据时,我是这样做的:
SiteSettings settings = await db.SiteSettings.FirstOrDefaultAsync();
还有其他更好的方法吗?
【问题讨论】:
-
这个问题实际上只能以当前形式的意见来回答,我们对您的上下文一无所知,无法判断什么是“更好”或“更差”。您对目前的工作方式有何不满?
-
至于 DB:从您的示例中您想使用 ORM,EF Core 非常受欢迎:docs.microsoft.com/en-us/ef/core
-
@stefan 我不一定认为这是一种反模式;样式数据必须存储在某个地方,无论是在 db 中还是在 db 引用的磁盘(类似于 db)上的 css 文件中。我们对为什么选择这种方式知之甚少,所以在我们被告知为什么它不再满足要求之前,我们不能自动跳到假定它的“错误”?可能有一天网站是按客户设计的,在这种情况下,在数据库中进行某种品牌配置是有意义的。因为这是不灵活的,但对于需求(无论它们是什么)可能没有错跨度>
-
还请注意,SO 不适用于软件推荐,但有一个专门的 SE 站点 - softwarerecs.se
-
@CaiusJard:因为
TextColor在里面,我觉得值得一提。显然,这取决于用例 - 但这似乎具有高水平的定制,我想给 OP 一个提示,他可能想重新考虑设置。只是试图提供替代方案。我知道 OP 没有要求它 - 我只是想提供另一种观点。例如,OP 也可以只存储 HTML。让我们看看 - 我会在 OP 阅读后删除我的评论。
标签: c# database-design asp.net-core-mvc