目前,我正在尝试使用LINQ连接到第三方数据库,以便将值添加到包含序列号的表中。但是,当我尝试运行程序时,会弹出问题标题的错误。
目前,程序在此命令上失败:
this.newSerialNumber(serialNum);
进入accountInfo方法,调用serialNumber方法的行如下(其当前位置用于测试目的):
[WebMethod]
public bool newSerialNumber(string serialNum)
{
SerialNumbers new_SN = new SerialNumbers();
//serialNumber is the primary key in the SerialNumbers table
new_SN.SerialNumber = serialNum;
new_SN.Count = 1;
linqQueries.SerialNumbers.InsertOnSubmit(new_SN);
linqQueries.SubmitChanges();
return true;
}
最后,newSerialNumber方法如下所示:
[WebMethod]
public bool CustomerInfo(string DealershipName, string DealershipEmail, string DealershipAddress, string Name, string DealershipNumber, string DealershipPhone, string serialNumber, string registrationNum)
{
//Add the new customer to the table
CustomerInformation newCustomer = new CustomerInformation();
newCustomer.DealershipName = DealershipName;
newCustomer.DealershipEmail = DealershipEmail;
newCustomer.DealershipAddress = DealershipAddress;
newCustomer.Name = Name;
newCustomer.DealershipNumber = DealershipNumber;
newCustomer.DealershipPhone = DealershipPhone;
linqQueries.CustomerInformations.InsertOnSubmit(newCustomer);
linqQueries.SubmitChanges();
//string activateCode = getActivation(registrationNum);
CustomerAccount newAccount = new CustomerAccount();
newAccount.SerialNumber = serialNumber;
newAccount.DealershipEmail = DealershipEmail;
newAccount.RegistrationNumber = registrationNum;
newAccount.CustomerInformation = newCustomer;
linqQueries.CustomerAccounts.InsertOnSubmit(newAccount);
linqQueries.SubmitChanges();
return true;
}
此代码源自已经工作的代码,其内容如下:
public class User {
public int ID { get; set; }
public string Name { get; set; }
public City City { get; set; }
public Office Office { get; set; }
}
除了serialNumber值是SerialNumbers表中的主键之外,它还被列为唯一值。
我是否遗漏了某些内容,或者在这种情况下是否存在某种解决方法,我在这种情况下并未意识到这一点?
答案 0 :(得分:0)
更新:找出答案。事实证明,该程序并未将SerialNumber始终识别为主键。在再次查看this回答之后,我决定在解决方案中寻找“IsPrimaryKey”。事实证明,在解决方案中有一个我完全没有丢失的文件来处理数据库中的表。 SerialNumbers表代码如下所示:
<Table Name="dbo.SerialNumbers" Member="SerialNumbers">
<Type Name="SerialNumbers">
<Column Member="SerialNumber" Type="System.String" CanBeNull="false" />
<Column Member="Count" Type="int" CanBeNull="false" />
</Type>
在我注意到这一点后,解决方案变得明显。这条线
<Column Member="SerialNumber" Type="System.String" CanBeNull="false" />
应该是
<Column Member="SerialNumber" Type="System.String" IsPrimaryKey="true" CanBeNull="false" />
这一快速修改解决了这个问题。
P.S。使用第三方数据库时,请确保将数据库中的dll文件保持最新!如果不这样做可能会导致程序无法按预期运行。