我有一个SQL DB,其中包含各种表格,用于保存产品信息(用于在线商店),而且我用C#进行编码。有一些与给定产品相关的选项,如上所述,有关这些选项的信息在保存时分布在几个表中。
现在,当我在CMS中编辑此产品时,我会看到现有产品选项的列表,我可以添加到该列表或从中删除,如您所料。
当我保存产品时,我需要检查记录是否已经存在,如果是,则更新它,如果没有则保存新记录。我正在努力找到一种有效的方法。我保持与产品选项相关的ID是非常重要的,因此每次清除它们并重新保存它们是不幸的。
再次描述,可能更清楚:想象一下,当我加载产品时,我有一系列选项,这会加载到内存中并根据用户选择的内容添加/删除。当他们点击“保存”时,我需要检查哪些选项是更新以及列表中的新选项。
有效做到这一点的任何建议吗?
感谢。
答案 0 :(得分:1)
我通常通过执行以下操作来执行此操作:
或者,如果您创建一个阻止重复行的唯一约束,则可以执行相反的操作:
答案 1 :(得分:1)
如果您希望实现的效率与数据库往返次数相关,那么您可以编写存储过程来执行更新或为您插入。
在大多数情况下,首先没有必要首先避免SELECT,只要你的表上有适当的主键或唯一索引,这应该非常快。
如果效率是在服务器端优雅或减少代码方面,那么我会考虑使用某种ORM,例如Entity Framework 4.0。使用适当的ORM体系结构,您几乎可以不再考虑数据库记录和INSERT / UPDATE,只需使用内存中的对象集合。
答案 2 :(得分:0)
运行选择查询以检查ID。如果存在则需要更新。如果它不存在则需要插入。
如果没有更多细节,我不确定还能告诉你什么。这是相当标准的。