【发布时间】:2015-11-01 14:14:53
【问题描述】:
我正在尝试将客户表中的 CustId(主键)添加到 CustomerAddress 表中的 CustID(外键)中。但我无法自动添加外键。我该怎么办。下面是我的架构(我从我的 SQL Server 实例复制它)
CREATE TABLE [dbo].[Customers]
(
[CustId] INT IDENTITY (1, 1) NOT NULL,
[FirstName] NVARCHAR (50) NOT NULL,
[MiddleName] NVARCHAR (50) NULL,
[LastName] NVARCHAR (50) NOT NULL,
[Salutation] NVARCHAR (10) NULL,
[Position] NVARCHAR (50) NULL,
[OrganizationType] NVARCHAR (50) NULL,
[PhoneNumber] NVARCHAR (50) NOT NULL,
[Ext] NCHAR (10) NULL,
[FaxNumber] NVARCHAR (50) NULL,
[CellNumber] NVARCHAR (50) NULL,
[EmailAddress] NVARCHAR (50) NOT NULL,
[EmailPermission] NCHAR (10) NOT NULL,
[Password] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([CustId] ASC)
);
CREATE TABLE [dbo].[CustomerAddress]
(
[AddressID] INT NOT NULL IDENTITY (1, 1),
[CustID] INT,
[OrganizationName] NVARCHAR (50) NOT NULL,
[Division] NVARCHAR (50) NULL,
[Department] NVARCHAR (50) NOT NULL,
[BuildingRoom] NVARCHAR (50) NULL,
[Street] NVARCHAR (50) NULL,
[City] NVARCHAR (50) NULL,
[POBox] NVARCHAR (50) NULL,
[Province] NVARCHAR (50) NULL,
[PostalCode] NCHAR (10) NOT NULL,
[Country] NVARCHAR (30) NOT NULL,
[AddressType] CHAR (10) NOT NULL,
PRIMARY KEY CLUSTERED ([AddressID]),
CONSTRAINT [FK_CustID] FOREIGN KEY ([CustID]) REFERENCES [dbo].[Customers] ([CustId])
);
插入数据的C#代码:
public int AddCustomerDeliveryAddress(CustomerAddressBLL NewCustomerDeliveryAddressBLL)
{
string sql = string.Format(@"Insert into CustomerAddress (OrganizationName,Division,Department,BuildingRoom,Street,City,POBox,Province,PostalCode,Country,AddressType)
Values(@OrganizationName,@Division,@Department,@BuildingRoom,@Street,@City,@POBox,@Province,@PostalCode,@Country,@AddressType)");
db.AddParameter("@OrganizationName", NewCustomerDeliveryAddressBLL.Organization);
db.AddParameter("@Division", NewCustomerDeliveryAddressBLL.Division);
db.AddParameter("@Department", NewCustomerDeliveryAddressBLL.Department);
db.AddParameter("@BuildingRoom", NewCustomerDeliveryAddressBLL.BuildingRoom);
db.AddParameter("@Street", NewCustomerDeliveryAddressBLL.Street);
db.AddParameter("@City", NewCustomerDeliveryAddressBLL.City);
db.AddParameter("@POBox", NewCustomerDeliveryAddressBLL.PoBox);
db.AddParameter("@Province", NewCustomerDeliveryAddressBLL.Province);
db.AddParameter("@PostalCode", NewCustomerDeliveryAddressBLL.PostalCode);
db.AddParameter("@Country", NewCustomerDeliveryAddressBLL.Country);
db.AddParameter("@AddressType", NewCustomerDeliveryAddressBLL.AddressType);
return db.ExecuteNonQuery(sql);
}
【问题讨论】:
-
我正在使用注册表单添加这些值。
-
就我所见,结构似乎很好 - 你的问题是什么,你的实际问题是什么?
-
@marc_s 我想根据客户表中的 CustID 值自动将相同的外键值从 CustomerAddress 添加到 CustID 中。因为我不知道在外键表中给出什么值
-
那么请告诉我们您如何将数据插入
Customer和CustomerAddress!您使用的是 T-SQL 存储过程吗?其他一些代码?原始 C#/ADO.NET 还是其他?也许是实体框架?您需要向我们展示!我们看不到您的屏幕,也看不到您的想法.... -
它是一个 3 层 Web 应用程序,我正在为 Customer 和 CustomerAddress 使用类,每个类执行一个简单的 ADO.NET 查询。
标签: c# sql-server database database-design