【发布时间】:2018-10-11 10:43:02
【问题描述】:
我在调试期间仍然收到此错误。我不知道该怎么做,因为我已经为 Person 类添加了 AdddressID。
请帮忙!
INSERT 语句与 FOREIGN KEY 约束 \"FK_Person_ToAddress\" 冲突。数据库“DirectoryDatabase”、表“dbo.Address”、“AddressID”列中发生冲突
引发此错误的函数是:
public void CreatePersonDB(ref Person person)
{
string CreatePerson =
@"INSERT INTO [Person] (FirstName, MiddleName, LastName, AddressID)
OUTPUT INSERTED.PersonID
VALUES (@FName, @MName, @LName, @AID)";
using (SqlCommand cmd = new SqlCommand(CreatePerson, OpenConnection))
{
// Get your parameters ready
cmd.Parameters.AddWithValue("@FName", person.FirstName);
cmd.Parameters.AddWithValue("@MName", person.MiddleName);
cmd.Parameters.AddWithValue("@LName", person.LastName);
cmd.Parameters.AddWithValue("@AID", person.PrimaryAddress.AddressID);
try
{
person.PersonID = (int)cmd.ExecuteScalar(); //Returns the identity of the new tuple/record}
}
catch
{
Console.WriteLine("Adresse ID doesn't exist, do you want to add it? [y/n]");
ConsoleKeyInfo input = Console.ReadKey();
if (input.Key == ConsoleKey.Y)
{
//create an insert query to the dbo.Adresse the same way you did with the dbo.person.
CreateAddressDB();
}
}
}
Person & Address 的数据库 sql 代码如下所示(编辑后):
CREATE TABLE Address (
AddressID BIGINT IDENTITY(1,1) NOT NULL,
StreetName NVARCHAR(MAX) NOT NULL,
HouseNumber NVARCHAR(MAX) NOT NULL,
CityID BIGINT NOT NULL,
[PersonID] NCHAR(10) 非空, [PrimaryAddress] INT NOT NULL, CONSTRAINT pk_Address PRIMARY KEY CLUSTERED (AddressID), 约束 fk_Address 外键(CityID) 参考城市 (CityID) 删除无操作 更新无操作)
这是地址表:
CREATE TABLE Person (
PersonID BIGINT IDENTITY(1,1) NOT NULL,
FirstName VARCHAR(50) NOT NULL,
MiddleName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
AddressID BIGINT NOT NULL,
CONSTRAINT pk_Person PRIMARY KEY CLUSTERED (PersonID), 约束 fk_Person 外键(地址 ID) 参考地址 (AddressID) )
【问题讨论】:
-
我读了这个帖子,但我想不出要修复我的代码。
标签: c# sql-server