【发布时间】:2016-02-03 08:45:28
【问题描述】:
在编程方面,我真的是个新手。我一直在使用用 C# MVC5 编写的 Web 应用程序。我将 MSSQL 用于我的数据库和一些编程模型,例如 Linq 和 Entity Framework。
到目前为止,我需要处理的是合并具有相同内容的单个表中的行。
例如 我有以下表格,其中包含以下列:
表格contact_type
[socialId][socialName][webUrlTemplate]表 rated_merge
[mergeId][timestamp][ratedId]
表 rated* [ratedId][fname][lname][mergeId][ratings]
表**rated_contact
[id][ratedId][socialId][value]
我有一个表单,用户可以在其中输入他们的社交网络/约会网站用户名/ID,在其中提交后,表单的内容将保存到 rated 和 rated_contact 表中。
提交表单后,它会首先检查表单在 rated 和 rated_contact 表中是否有匹配的记录。 如果没有匹配的记录,表格内容将被保存为新记录。
但是如果有匹配,这就是合并发生的地方 (仅当系统检测到来自 from 的用户名是否与数据库中的任何用户名匹配时才会发生匹配)。将比较匹配的行,将创建一个新记录,其中包含比较行的所有差异和匹配项。然后之前的记录将被标记为已删除。这条新记录将完善被评级人员的个人资料。
创建合并后,rated_contact 表中的 [ratedId] 列将更新为新创建的合并记录中的 [ratedId]。然后使用 rated_merge 表,我需要插入一个包含 [timestamp]、[ratedId] 和 [mergeId] 的新记录,这是一个自动增量字段。
我需要获取 [mergeId] 并更新 rated 表中所有匹配记录的 [mergeId] 列。
对我应该采取什么方法有什么建议吗?
谢谢大家。
【问题讨论】:
-
你有什么共同的ID吗?哪个唯一标识用户 ii 无论该用户提供的 twitter、facebook id 是什么?
-
我不得不问,为什么这些“重复”行首先存在?它们是如何被插入到数据库中的
-
@Viru 是的,每个名字都有一个对应的userId作为主键。
-
@Takarii 该应用程序是一个人员评级应用程序。一个被评价的人可以被许多用户多次评价,这就是为什么表中可能存在重复的行。 (^_^)
-
您应该根据初始表中的 PK 检查该表是否存在 FK,然后如果存在则更新该行,否则您插入。这种整个重复行的情况首先不应该存在。
标签: c# sql-server entity-framework linq merge