【发布时间】:2011-03-06 10:23:56
【问题描述】:
在过去的几年里,我已经多次看到一种特定的模式。请让我描述一下。
在 UI 中,每条新记录(例如,新客户详细信息)都存储在表单中,而不保存到数据库中。这显然已经完成,因此不会使数据库混乱或导致不必要的数据库命中。
在 UI 状态下,这些对象使用 Guid 进行标识。当这些被保存到数据库时,它们关联的 Guid 不会被存储。相反,它们被分配了一个数据库 Int 作为它们的主键。
表单可以处理从数据库中检索到的项目(使用 Int)以及尚未提交的项目(使用 Guid)的混合。
在检查表单(使用 Firebug)以查看使用了哪个键时,我们发现使用了一个由两部分分隔的组合键。第一部分是 guid(如果从数据库中提取,则为空 guid),第二部分是整数(如果不是从数据库中提取,则存储零)。由于组合键的一部分将始终唯一标识一条记录,因此效果很好。
这是好的做法吗?任何人都可以告诉我模式名称或建议一个(如果尚未命名)吗?
【问题讨论】:
-
如果您可以就您的问题提供更多细节和清晰度,以便更好地理解。你让我在“检查时”那一行。 :)
-
哦,是的,“检查时”是指使用萤火虫检查表单上的隐藏字段。在没有从数据库中检索到记录的情况下,字段值将读取例如“00000000-0000-0000-0000-000000000000,66”。而当数据库中已经存在一条记录时,它会显示一个类似“C4200000-0000-0000-0000-F00000000000,0”的值。
-
哪些 ASP.NET 控件会产生此标记?
-
哦,它只是一个 ASP.Net DropDownList。这些是值示例,而相关文本显示客户名称。该值被拆分为一个键值对,该键值对填充到两个属性中,ID (Int32) 和 Identity (Guid)。
标签: asp.net design-patterns webforms