C# 为什么linqtosql要在我的表中插入重复项?

C# 为什么linqtosql要在我的表中插入重复项?,c#,.net,sql,linq,linq-to-sql,C#,.net,Sql,Linq,Linq To Sql,我有一个web服务,它从我的数据库中检索评论,如果没有返回足够的评论,它将转到第二个源并将它们放到那里,并将它们缓存到我的数据库中。我最近注意到它一直在我的数据库中创建重复项,尽管我有主键来阻止它。我在想也许当我做桌子的时候我做错了什么? 以下是SQL创建表代码段: create table Review( ReviewID int IDENTITY, CacheDate DateTime, UniqueID nvarchar(50), Type nvarchar(100),

我有一个web服务,它从我的数据库中检索评论,如果没有返回足够的评论,它将转到第二个源并将它们放到那里,并将它们缓存到我的数据库中。我最近注意到它一直在我的数据库中创建重复项,尽管我有主键来阻止它。我在想也许当我做桌子的时候我做错了什么? 以下是SQL创建表代码段:

create table Review(  
ReviewID int IDENTITY,  
CacheDate DateTime,  
UniqueID nvarchar(50),  
Type nvarchar(100),  
AverageRating decimal,  
TotalReviews decimal,  
Rating decimal,  
Content nvarchar(max),  
Summary varchar(100),  
HelpfulVotes int,  
TotalVotes int,  
ReviewDate nvarchar(100),  
ReviewerID nvarchar(100),  
ReviewerName nvarchar(100),  
ReviewerLocation nvarchar(100),  
primary key(ReviewID,UniqueID) 
)
我已经遍历了我的代码,当它到达try-catch部分时,它仍然插入该行,即使它已经存在

try { db.SubmitChanges(); }  
catch (Exception ex) {.....  

有人知道问题出在哪里吗?

您的主键基于ReviewID和UniqueID列。因此,两列的组合必须是唯一的


您的副本是否具有匹配的ReviewID和UniqueID?

您将PK置于UniqueID和Identity列(ReviewID)之上的具体原因是什么?作为替代方案,为什么不在UniqueID上设置一个唯一的约束,而在ReviewID上设置PK呢?

我对SQL Server比较陌生,我通常使用PK来实现我想要的唯一性。我不知道你可以对事情施加限制。非常感谢你的帮助!!你的答案也很有帮助,很难选择最好的答案。谢谢你的帮助,非常感谢。