Vb.net 检查主键是否已存在

Vb.net 检查主键是否已存在,vb.net,linq-to-sql,primary-key,any,Vb.net,Linq To Sql,Primary Key,Any,在尝试使用下面的代码添加另一条记录之前,我正在尝试检查是否存在主键。我知道该表的pk为15,因此if语句应该为true,但代码不起作用。if语句为false,我在submitchanges()上收到一个错误,说我不能添加重复的密钥。这是检查pk是否存在的最佳方法吗?如果存在,代码有什么问题 'check if an existing PK exists Dim lkup = From z In DATA.MONTE_CARLOs Where

在尝试使用下面的代码添加另一条记录之前,我正在尝试检查是否存在
主键。我知道该表的pk为15,因此
if
语句应该为true,但代码不起作用。
if
语句为false,我在
submitchanges()
上收到一个错误,说我不能添加重复的密钥。这是检查pk是否存在的最佳方法吗?如果存在,代码有什么问题

'check if an existing PK exists
        Dim lkup = From z In DATA.MONTE_CARLOs
                   Where z.ID = 15
                   Select z

        If lkup.Any() = False Then
            DATA.BOOKs.InsertOnSubmit(newBOOK)
        End If

        DATA.SubmitChanges()

PK 15是否已存储在DB中,还是仅在代码中更改?你用EF吗?顺便说一句,当您将ID字段设置为auto_increment并让数据库执行PK检查时,这会容易得多。tks Alex…是的,15的PK已经在一个数据表中了(我可以在查看表数据时看到它)。什么是EF?ID pk用于链接到另一个表,因此我无法将其设置为自动增量。您的检查和插入似乎在不同的表中执行
MONTE_CARLOs
BOOKs
。这是否可能是
BOOKs
表包含
ID=15
,但
MONTE_CARLOs
不包含?EF=。当然,您可以在使用外键时使用自动增量。我假设您使用的是SQL Server,因此正确的术语是
identity
。示例:
创建表A(ID整数标识(1,1)主键)创建表B(ID整数主键、A_ID整数、约束FK_AB外键(A_ID)引用A(ID))
表A中的列ID现在将自动递增。将记录插入表B时,检查表a中是否存在一个\u ID。