Язык программирования C#9 и платформа .NET5
[CustomerId] [int] NOT NULL,[TimeStamp] [timestamp] NULL,CONSTRAINT [PK_CreditRisks] PRIMARY KEY CLUSTERED([Id] ASC) ON [PRIMARY]) ON [PRIMARY]GOСоздание отношений между таблицами
В последующих разделах будут добавляться отношения внешнего ключа между взаимосвязанными таблицами.
Создание отношения между таблицами Inventory и Makes
Откройте окно нового запроса, введите показанные далее команды SQL и щелкните на кнопке Run (или нажмите <F5>):
USE [AutoLot]GOCREATE NONCLUSTERED INDEX [IX_Inventory_MakeId] ON [dbo].[Inventory]([MakeId] ASC) ON [PRIMARY]GOALTER TABLE [dbo].[Inventory]WITH CHECK ADD CONSTRAINT [FK_Make_Inventory] FOREIGNKEY([MakeId])REFERENCES [dbo].[Makes] ([Id])GOALTER TABLE [dbo].[Inventory] CHECK CONSTRAINT [FK_Make_Inventory]GOСоздание отношения между таблицами Inventory и Orders
Откройте окно нового запроса, введите следующие команды SQL и щелкните на кнопке Run (или нажмите <F5>):
USE [AutoLot]GOCREATE NONCLUSTERED INDEX [IX_Orders_CarId] ON [dbo].[Orders]([CarId] ASC) ON [PRIMARY]GOALTER TABLE [dbo].[Orders]WITH CHECK ADD CONSTRAINT [FK_Orders_Inventory] FOREIGNKEY([CarId])REFERENCES [dbo].[Inventory] ([Id])GOALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Inventory]GOСоздание отношения между таблицами Orders и Customers
Откройте окно нового запроса, введите приведенные ниже команды SQL и щелкните на кнопке Run (или нажмите <F5>):
USE [AutoLot]GOCREATE UNIQUE NONCLUSTERED INDEX [IX_Orders_CustomerId_CarId] ON [dbo].[Orders]([CustomerId] ASC,[CarId] ASC) ON [PRIMARY]GOALTER TABLE [dbo].[Orders]WITH CHECK ADD CONSTRAINT [FK_Orders_Customers] FOREIGNKEY([CustomerId])REFERENCES [dbo].[Customers] ([Id])ON DELETE CASCADEGOALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]GOСоздание отношения между таблицами Customers и CreditRisks
Откройте окно нового запроса, введите приведенные ниже команды SQL и щелкните на кнопке Run (или нажмите <F5>):
USE [AutoLot]GOCREATE NONCLUSTERED INDEX [IX_CreditRisks_CustomerId] ON [dbo].[CreditRisks]([CustomerId] ASC) ON [PRIMARY]GOALTER TABLE [dbo].[CreditRisks]WITH CHECK ADD CONSTRAINT [FK_CreditRisks_Customers]FOREIGN KEY([CustomerId])REFERENCES [dbo].[Customers] ([Id])ON DELETE CASCADEGOALTER TABLE [dbo].[CreditRisks] CHECK CONSTRAINT [FK_CreditRisks_Customers]GOНа заметку! Наличие столбцов
и отношение с таблицей преследует здесь только демонстрационные цели. В главе 23 они будут задействованы в более интересном сценарии.FirstName/LastNameСоздание хранимой процедуры GetPetName
Позже в главе вы узнаете, как использовать ADO.NET для вызова хранимых процедур. Возможно, вам уже известно, что хранимые процедуры — это подпрограммы кода, хранящиеся внутри базы данных, которые выполняют какие-то действия. Подобно методам C# хранимые процедуры могут возвращать данные или просто работать с данными, ничего не возвращая. Добавьте одиночную хранимую процедуру, которая будет возвращать дружественное имя автомобиля на основе предоставленного
. Откройте окно нового запроса и введите следующую команду SQL:carIdUSE [AutoLot]GOCREATE PROCEDURE [dbo].[GetPetName]@carID int,@petName nvarchar(50) outputASSELECT @petName = PetName from dbo.Inventory where Id = @carIDGOЩелкните на кнопке Run (или нажмите <F5>), чтобы создать хранимую процедуру.
Добавление тестовых записей
В отсутствие данных базы данных не особо интересны, поэтому удобно иметь сценарии, которые способны быстро загрузить тестовые записи в базу данных.
Записи таблицы Makes
Создайте новый запрос и выполните показанные далее операторы SQL для добавления записей в таблицу
:Makes