为什么LINQ to SQL将重复项插入到我的表中?

时间:2009-04-22 23:13:30

标签: c# .net sql linq linq-to-sql

我有一个Web服务,可以从我的数据库中检索评论,如果没有返回足够的评论,它会转到辅助源并将它们放到那里并将它们缓存在我的数据库中。我最近注意到它已经在我的数据库中创建了重复项,尽管我有主键来防止它。我在想,也许当我做桌子时我做错了什么? 这是SQL create table snippet:

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) {.....  

有谁知道问题可能是什么?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

您将PK放在UniqueID和Identity列(ReviewID)上的任何特殊原因?作为替代方案,为什么不在ReviewID上对UniqueID和PK进行唯一约束?