Создание приложения магазина и наличие двух основных таблиц Product
и Customer
.Цель состоит в том, чтобы создать таблицу Order
, в которой клиент может выбрать из списка все продукты и добавить ее в таблицу заказов.
Таблица клиентов
CREATE TABLE [dbo].[Customer]
(
[CustomerId] INT IDENTITY (1, 1) NOT NULL,
[FirstName] NVARCHAR(40) NOT NULL,
[LastName] NVARCHAR(20) NOT NULL,
[Email] NVARCHAR(60) NOT NULL,
[Photo] VARBINARY(MAX) NULL,
[password] VARCHAR(300) NULL,
[Country] VARCHAR(50) NULL,
CONSTRAINT [PK_Customer]
PRIMARY KEY CLUSTERED ([CustomerId] ASC)
);
Таблица продуктов:
CREATE TABLE [dbo].[Product]
(
[ProductId] INT IDENTITY (1, 1) NOT NULL,
[ProductName] NVARCHAR(50) NOT NULL,
[ProductDetails] TEXT NULL,
[ProductPrice] INT NOT NULL,
[ProductCategory] NVARCHAR(50) NULL,
PRIMARY KEY CLUSTERED ([ProductId] ASC)
);
Таблица заказов
CREATE TABLE [dbo].[Order]
(
[OrderId] INT IDENTITY (1, 1) NOT NULL,
[CustomerId] INT NOT NULL,
[ProductId] INT NOT NULL,
[Date] DATE NULL,
[Time] TIME(7) NULL,
CONSTRAINT [ORDER_PK]
PRIMARY KEY CLUSTERED ([OrderId] ASC),
CONSTRAINT [CUSTOMER_FK]
FOREIGN KEY ([CustomerId])
REFERENCES [dbo].[Customer] ([CustomerId])
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT [PRODUCT_FK]
FOREIGN KEY ([ProductId])
REFERENCES [dbo].[Product] ([ProductId])
ON DELETE CASCADE ON UPDATE CASCADE
);
C # код для добавления заказа
public void AddOrder(Order a)
{
using (DbConnection conn = new SqlConnection(ConnStr))
{
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandTimeout = 120;
cmd.CommandText = @"INSERT INTO [dbo].[Order] (CustomerId, ProductId, Date, Time)
VALUES (@CustomerId, @ProductId, @Date, @Time)";
cmd.AddParameter("@CustomerId", a.CustomerId, DbType.Int32);
cmd.AddParameter("@ProductId", a.ProductId, DbType.Int32);
cmd.AddParameter("@Date", a.Date, DbType.Date);
cmd.AddParameter("@Time", a.Time.ToString(), DbType.String);
conn.Open();
cmd.ExecuteScalar();
}
}
}
При создании с помощью веб-форм выдается ошибка ExecuteScalar
:
System.Data.SqlClient.SqlException: 'Оператор INSERT конфликтует с ограничением FOREIGN KEY "CUSTOMER_FK".Конфликт произошел в базе данных "C: \ USERS \ USER \ DESKTOP \ 2019 5LVL \ DBSD \ TRYWISHLIST \ 3 \ 00005466 \ 00005466 \ APP_DATA \ KFCDB.MDF", таблица "dbo.Customer", столбец "CustomerId".Заявление было прекращено