PK更改为字符串时查找主键

时间:2015-08-20 19:45:48

标签: sql vb.net datatable primary-key nvarchar

我收到的用于编辑的服务(因此我无法单步执行)采用制表符分隔文件,并使用该数据更新或将新记录插入到我的数据库中的两个表中。

在尝试添加记录之前,它会在文件中搜索该行的主键。该程序涉及库存管理,Box ID称为其牌照(用于上下文)。

该服务执行以下操作:

rowLicensePlates = tblLicensePlates.FindByLicensePlate(LP)

其中Row牌照是System.Data.DataTable.DataRow(我认为我做对了。该程序使用了很多类,但我认为这是他们的基础)。 Tbllicenseplates是system.data.datatable。 FindbyLicensePlate是以下功能:

        <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
     Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _
    Public Function FindByLicensePlate(ByVal LicensePlate As String) As LicensePlatesRow
        Return CType(Me.Rows.Find(New Object() {LicensePlate}), LicensePlatesRow)
    End Function

如果它返回NOTHING,那么服务会插入一条记录,否则它会更新。

主键以前是整数,但客户增加到20位数迫使我将其更改为字符串。该字段现在是一个nvarchar(30)字段(30表示客户改变事物的倾向)。该服务之前成功更新了记录,但现在它在查找时没有检测到现有记录,尽管存在一个,当它尝试插入时会得到主键错误(因为我没有设置重复项) )。我怀疑对字符串的更改是导致此问题的原因,但除了设置新的数据读取器和运行自定义查询之外,我不知道如何更正它。我不想这样做,所以有人可以提供我可能遗失的任何东西吗?

谢谢,

0 个答案:

没有答案