Создание задач WishList / ShopingCart для ASP.net с внешними ключами - PullRequest
0 голосов
/ 25 марта 2019

Создание приложения магазина и наличие двух основных таблиц 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".Заявление было прекращено

1 Ответ

0 голосов
/ 25 марта 2019

Отправляемое CustomerId не существует в dbo.Customer, вставьте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...