ASP.NET Core - Entity Framework Call Store Procedure

This article is about calling store procedure using entity framework in ASP.NET Core.

In web development, especially databases, a connection with the Microsoft SQL server adds a lot of advantages in terms of business logic development at the database level. Stored procedures are one of the key advantages that the Microsoft SQL server provides. For boosting the query performance, the complex query should be written at the database level through stored procedures. Microsoft .NET Core supports calling of raw query and store procedure through entity framework.

In today's article, I will demonstrate a stored procedure call by using entity framework.

ASP.NET Core - Entity Framework Call Store Procedure

 

Prerequisites

Following are some prerequisites before you proceed any further in this tutorial:

  1. Understanding of ASP.NET Core framework.
  2. Upgrade Windows Power Shell to the latest version.
  3. Understanding of Stored Procedures.
  4. Knowledge about entity framework
  5. Knowledge about Bootstrap.
  6. Knowledge about C# programming.
  7. Knowledge about C# LINQ.

You can download the complete source code for this tutorial or you can follow the step by step discussion below. The sample code is developed in Microsoft Visual Studio 2017 Professional & SQL Server 2014. I have taken the data sample from AdventureWorks for SQL server 2014.

Let's begin now.

Step 1

First, create your existing SQL server database named "db_core_sp_call" which will be utilized in ASP.NET Core web application by executing the following SQL script; i.e.:
  1. USE [db_core_sp_call]  
  2. GO  
  3. /****** Object:  StoredProcedure [dbo].[GetProductByPriceGreaterThan1000]    Script Date: 10/9/2018 2:47:29 PM ******/  
  4. DROP PROCEDURE [dbo].[GetProductByPriceGreaterThan1000]  
  5. GO  
  6. /****** Object:  StoredProcedure [dbo].[GetProductByID]    Script Date: 10/9/2018 2:47:29 PM ******/  
  7. DROP PROCEDURE [dbo].[GetProductByID]  
  8. GO  
  9. /****** Object:  Table [dbo].[tbl_vendor]    Script Date: 10/9/2018 2:47:29 PM ******/  
  10. DROP TABLE [dbo].[tbl_vendor]  
  11. GO  
  12. /****** Object:  Table [dbo].[tbl_product]    Script Date: 10/9/2018 2:47:29 PM ******/  
  13. DROP TABLE [dbo].[tbl_product]  
  14. GO  
  15. /****** Object:  Table [dbo].[tbl_department]    Script Date: 10/9/2018 2:47:29 PM ******/  
  16. DROP TABLE [dbo].[tbl_department]  
  17. GO  
  18. /****** Object:  Table [dbo].[tbl_department]    Script Date: 10/9/2018 2:47:29 PM ******/  
  19. SET ANSI_NULLS ON  
  20. GO  
  21. SET QUOTED_IDENTIFIER ON  
  22. GO  
  23. CREATE TABLE [dbo].[tbl_department](  
  24.  [DepartmentId] [int] IDENTITY(1,1) NOT NULL,  
  25.  [Name] [nvarchar](maxNOT NULL,  
  26.  [GroupName] [nvarchar](maxNOT NULL,  
  27.  CONSTRAINT [PK_tbl_department] PRIMARY KEY CLUSTERED   
  28. (  
  29.  [DepartmentId] ASC  
  30. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ONON [PRIMARY]  
  31. ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  32.   
  33. GO  
  34. /****** Object:  Table [dbo].[tbl_product]    Script Date: 10/9/2018 2:47:29 PM ******/  
  35. SET ANSI_NULLS ON  
  36. GO  
  37. SET QUOTED_IDENTIFIER ON  
  38. GO  
  39. CREATE TABLE [dbo].[tbl_product](  
  40.  [ProductID] [int] IDENTITY(1,1) NOT NULL,  
  41.  [Name] [nvarchar](maxNOT NULL,  
  42.  [ProductNumber] [nvarchar](maxNOT NULL,  
  43.  [Color] [nvarchar](maxNOT NULL,  
  44.  [Quantity] [intNOT NULL,  
  45.  [Price] [money] NOT NULL,  
  46.  CONSTRAINT [PK_tbl_product] PRIMARY KEY CLUSTERED   
  47. (  
  48.  [ProductID] ASC  
  49. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ONON [PRIMARY]  
  50. ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  51.   
  52. GO  
  53. /****** Object:  Table [dbo].[tbl_vendor]    Script Date: 10/9/2018 2:47:29 PM ******/  
  54. SET ANSI_NULLS ON  
  55. GO  
  56. SET QUOTED_IDENTIFIER ON  
  57. GO  
  58. CREATE TABLE [dbo].[tbl_vendor](  
  59.  [VendorId] [int] IDENTITY(1,1) NOT NULL,  
  60.  [Name] [nvarchar](maxNOT NULL,  
  61.  CONSTRAINT [PK_tbl_vendor] PRIMARY KEY CLUSTERED   
  62. (  
  63.  [VendorId] ASC  
  64. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ONON [PRIMARY]  
  65. ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  66.   
  67. GO  
  68. SET IDENTITY_INSERT [dbo].[tbl_department] ON   
  69.   
  70. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (1, N'Engineering', N'Research and Development')  
  71. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (2, N'Tool Design', N'Research and Development')  
  72. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (3, N'Sales', N'Sales and Marketing')  
  73. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (4, N'Marketing', N'Sales and Marketing')  
  74. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (5, N'Purchasing', N'Inventory Management')  
  75. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (6, N'Research and Development', N'Research and Development')  
  76. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (7, N'Production', N'Manufacturing')  
  77. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (8, N'Production Control', N'Manufacturing')  
  78. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (9, N'Human Resources', N'Executive General and Administration')  
  79. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (10, N'Finance', N'Executive General and Administration')  
  80. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (11, N'Information Services', N'Executive General and Administration')  
  81. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (12, N'Document Control', N'Quality Assurance')  
  82. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (13, N'Quality Assurance', N'Quality Assurance')  
  83. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (14, N'Facilities and Maintenance', N'Executive General and Administration')  
  84. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (15, N'Shipping and Receiving', N'Inventory Management')  
  85. INSERT [dbo].[tbl_department] ([DepartmentId], [Name], [GroupName]) VALUES (16, N'Executive', N'Executive General and Administration')  
  86. SET IDENTITY_INSERT [dbo].[tbl_department] OFF  
  87. SET IDENTITY_INSERT [dbo].[tbl_product] ON   
  88.   
  89. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (680, N'HL Road Frame - Black, 58', N'FR-R92B-58', N'Black', 500, 1432.0000)  
  90. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (706, N'HL Road Frame - Red, 58', N'FR-R92R-58', N'Red', 500, 1432.0000)  
  91. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (707, N'Sport-100 Helmet, Red', N'HL-U509-R', N'Red', 4, 35.0000)  
  92. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (708, N'Sport-100 Helmet, Black', N'HL-U509', N'Black', 4, 35.0000)  
  93. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (709, N'Mountain Bike Socks, M', N'SO-B909-M', N'White', 4, 10.0000)  
  94. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (710, N'Mountain Bike Socks, L', N'SO-B909-L', N'White', 4, 10.0000)  
  95. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (711, N'Sport-100 Helmet, Blue', N'HL-U509-B', N'Blue', 4, 35.0000)  
  96. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (712, N'AWC Logo Cap', N'CA-1098', N'Multi', 4, 9.0000)  
  97. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (713, N'Long-Sleeve Logo Jersey, S', N'LJ-0192-S', N'Multi', 4, 50.0000)  
  98. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (714, N'Long-Sleeve Logo Jersey, M', N'LJ-0192-M', N'Multi', 4, 50.0000)  
  99. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (715, N'Long-Sleeve Logo Jersey, L', N'LJ-0192-L', N'Multi', 4, 50.0000)  
  100. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (716, N'Long-Sleeve Logo Jersey, XL', N'LJ-0192-X', N'Multi', 4, 50.0000)  
  101. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (717, N'HL Road Frame - Red, 62', N'FR-R92R-62', N'Red', 500, 1432.0000)  
  102. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (718, N'HL Road Frame - Red, 44', N'FR-R92R-44', N'Red', 500, 1432.0000)  
  103. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (719, N'HL Road Frame - Red, 48', N'FR-R92R-48', N'Red', 500, 1432.0000)  
  104. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (720, N'HL Road Frame - Red, 52', N'FR-R92R-52', N'Red', 500, 1432.0000)  
  105. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (721, N'HL Road Frame - Red, 56', N'FR-R92R-56', N'Red', 500, 1432.0000)  
  106. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (722, N'LL Road Frame - Black, 58', N'FR-R38B-58', N'Black', 500, 338.0000)  
  107. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (723, N'LL Road Frame - Black, 60', N'FR-R38B-60', N'Black', 500, 338.0000)  
  108. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (724, N'LL Road Frame - Black, 62', N'FR-R38B-62', N'Black', 500, 338.0000)  
  109. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (725, N'LL Road Frame - Red, 44', N'FR-R38R-44', N'Red', 500, 338.0000)  
  110. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (726, N'LL Road Frame - Red, 48', N'FR-R38R-48', N'Red', 500, 338.0000)  
  111. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (727, N'LL Road Frame - Red, 52', N'FR-R38R-52', N'Red', 500, 338.0000)  
  112. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (728, N'LL Road Frame - Red, 58', N'FR-R38R-58', N'Red', 500, 338.0000)  
  113. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (729, N'LL Road Frame - Red, 60', N'FR-R38R-60', N'Red', 500, 338.0000)  
  114. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (730, N'LL Road Frame - Red, 62', N'FR-R38R-62', N'Red', 500, 338.0000)  
  115. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (731, N'ML Road Frame - Red, 44', N'FR-R72R-44', N'Red', 500, 595.0000)  
  116. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (732, N'ML Road Frame - Red, 48', N'FR-R72R-48', N'Red', 500, 595.0000)  
  117. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (733, N'ML Road Frame - Red, 52', N'FR-R72R-52', N'Red', 500, 595.0000)  
  118. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (734, N'ML Road Frame - Red, 58', N'FR-R72R-58', N'Red', 500, 595.0000)  
  119. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (735, N'ML Road Frame - Red, 60', N'FR-R72R-60', N'Red', 500, 595.0000)  
  120. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (736, N'LL Road Frame - Black, 44', N'FR-R38B-44', N'Black', 500, 338.0000)  
  121. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (737, N'LL Road Frame - Black, 48', N'FR-R38B-48', N'Black', 500, 338.0000)  
  122. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (738, N'LL Road Frame - Black, 52', N'FR-R38B-52', N'Black', 500, 338.0000)  
  123. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (739, N'HL Mountain Frame - Silver, 42', N'FR-M94S-42', N'Silver', 500, 1365.0000)  
  124. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (740, N'HL Mountain Frame - Silver, 44', N'FR-M94S-44', N'Silver', 500, 1365.0000)  
  125. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (741, N'HL Mountain Frame - Silver, 48', N'FR-M94S-52', N'Silver', 500, 1365.0000)  
  126. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (742, N'HL Mountain Frame - Silver, 46', N'FR-M94S-46', N'Silver', 500, 1365.0000)  
  127. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (743, N'HL Mountain Frame - Black, 42', N'FR-M94B-42', N'Black', 500, 1350.0000)  
  128. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (744, N'HL Mountain Frame - Black, 44', N'FR-M94B-44', N'Black', 500, 1350.0000)  
  129. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (745, N'HL Mountain Frame - Black, 48', N'FR-M94B-48', N'Black', 500, 1350.0000)  
  130. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (746, N'HL Mountain Frame - Black, 46', N'FR-M94B-46', N'Black', 500, 1350.0000)  
  131. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (747, N'HL Mountain Frame - Black, 38', N'FR-M94B-38', N'Black', 500, 1350.0000)  
  132. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (748, N'HL Mountain Frame - Silver, 38', N'FR-M94S-38', N'Silver', 500, 1365.0000)  
  133. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (749, N'Road-150 Red, 62', N'BK-R93R-62', N'Red', 100, 3579.0000)  
  134. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (750, N'Road-150 Red, 44', N'BK-R93R-44', N'Red', 100, 3579.0000)  
  135. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (751, N'Road-150 Red, 48', N'BK-R93R-48', N'Red', 100, 3579.0000)  
  136. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (752, N'Road-150 Red, 52', N'BK-R93R-52', N'Red', 100, 3579.0000)  
  137. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (753, N'Road-150 Red, 56', N'BK-R93R-56', N'Red', 100, 3579.0000)  
  138. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (754, N'Road-450 Red, 58', N'BK-R68R-58', N'Red', 100, 1458.0000)  
  139. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (755, N'Road-450 Red, 60', N'BK-R68R-60', N'Red', 100, 1458.0000)  
  140. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (756, N'Road-450 Red, 44', N'BK-R68R-44', N'Red', 100, 1458.0000)  
  141. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (757, N'Road-450 Red, 48', N'BK-R68R-48', N'Red', 100, 1458.0000)  
  142. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (758, N'Road-450 Red, 52', N'BK-R68R-52', N'Red', 100, 1458.0000)  
  143. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (759, N'Road-650 Red, 58', N'BK-R50R-58', N'Red', 100, 783.0000)  
  144. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (760, N'Road-650 Red, 60', N'BK-R50R-60', N'Red', 100, 783.0000)  
  145. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (761, N'Road-650 Red, 62', N'BK-R50R-62', N'Red', 100, 783.0000)  
  146. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (762, N'Road-650 Red, 44', N'BK-R50R-44', N'Red', 100, 783.0000)  
  147. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (763, N'Road-650 Red, 48', N'BK-R50R-48', N'Red', 100, 783.0000)  
  148. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (764, N'Road-650 Red, 52', N'BK-R50R-52', N'Red', 100, 783.0000)  
  149. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (765, N'Road-650 Black, 58', N'BK-R50B-58', N'Black', 100, 783.0000)  
  150. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (766, N'Road-650 Black, 60', N'BK-R50B-60', N'Black', 100, 783.0000)  
  151. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (767, N'Road-650 Black, 62', N'BK-R50B-62', N'Black', 100, 783.0000)  
  152. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (768, N'Road-650 Black, 44', N'BK-R50B-44', N'Black', 100, 783.0000)  
  153. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (769, N'Road-650 Black, 48', N'BK-R50B-48', N'Black', 100, 783.0000)  
  154. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (770, N'Road-650 Black, 52', N'BK-R50B-52', N'Black', 100, 783.0000)  
  155. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (771, N'Mountain-100 Silver, 38', N'BK-M82S-38', N'Silver', 100, 3400.0000)  
  156. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (772, N'Mountain-100 Silver, 42', N'BK-M82S-42', N'Silver', 100, 3400.0000)  
  157. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (773, N'Mountain-100 Silver, 44', N'BK-M82S-44', N'Silver', 100, 3400.0000)  
  158. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (774, N'Mountain-100 Silver, 48', N'BK-M82S-48', N'Silver', 100, 3400.0000)  
  159. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (775, N'Mountain-100 Black, 38', N'BK-M82B-38', N'Black', 100, 3375.0000)  
  160. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (776, N'Mountain-100 Black, 42', N'BK-M82B-42', N'Black', 100, 3375.0000)  
  161. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (777, N'Mountain-100 Black, 44', N'BK-M82B-44', N'Black', 100, 3375.0000)  
  162. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (778, N'Mountain-100 Black, 48', N'BK-M82B-48', N'Black', 100, 3375.0000)  
  163. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (779, N'Mountain-200 Silver, 38', N'BK-M68S-38', N'Silver', 100, 2320.0000)  
  164. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (780, N'Mountain-200 Silver, 42', N'BK-M68S-42', N'Silver', 100, 2320.0000)  
  165. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (781, N'Mountain-200 Silver, 46', N'BK-M68S-46', N'Silver', 100, 2320.0000)  
  166. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (782, N'Mountain-200 Black, 38', N'BK-M68B-38', N'Black', 100, 2295.0000)  
  167. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (783, N'Mountain-200 Black, 42', N'BK-M68B-42', N'Black', 100, 2295.0000)  
  168. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (784, N'Mountain-200 Black, 46', N'BK-M68B-46', N'Black', 100, 2295.0000)  
  169. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (785, N'Mountain-300 Black, 38', N'BK-M47B-38', N'Black', 100, 1080.0000)  
  170. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (786, N'Mountain-300 Black, 40', N'BK-M47B-40', N'Black', 100, 1080.0000)  
  171. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (787, N'Mountain-300 Black, 44', N'BK-M47B-44', N'Black', 100, 1080.0000)  
  172. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (788, N'Mountain-300 Black, 48', N'BK-M47B-48', N'Black', 100, 1080.0000)  
  173. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (789, N'Road-250 Red, 44', N'BK-R89R-44', N'Red', 100, 2444.0000)  
  174. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (790, N'Road-250 Red, 48', N'BK-R89R-48', N'Red', 100, 2444.0000)  
  175. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (791, N'Road-250 Red, 52', N'BK-R89R-52', N'Red', 100, 2444.0000)  
  176. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (792, N'Road-250 Red, 58', N'BK-R89R-58', N'Red', 100, 2444.0000)  
  177. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (793, N'Road-250 Black, 44', N'BK-R89B-44', N'Black', 100, 2444.0000)  
  178. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (794, N'Road-250 Black, 48', N'BK-R89B-48', N'Black', 100, 2444.0000)  
  179. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (795, N'Road-250 Black, 52', N'BK-R89B-52', N'Black', 100, 2444.0000)  
  180. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (796, N'Road-250 Black, 58', N'BK-R89B-58', N'Black', 100, 2444.0000)  
  181. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (797, N'Road-550-W Yellow, 38', N'BK-R64Y-38', N'Yellow', 100, 1121.0000)  
  182. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (798, N'Road-550-W Yellow, 40', N'BK-R64Y-40', N'Yellow', 100, 1121.0000)  
  183. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (799, N'Road-550-W Yellow, 42', N'BK-R64Y-42', N'Yellow', 100, 1121.0000)  
  184. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (800, N'Road-550-W Yellow, 44', N'BK-R64Y-44', N'Yellow', 100, 1121.0000)  
  185. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (801, N'Road-550-W Yellow, 48', N'BK-R64Y-48', N'Yellow', 100, 1121.0000)  
  186. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (814, N'ML Mountain Frame - Black, 38', N'FR-M63B-38', N'Black', 500, 349.0000)  
  187. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (815, N'LL Mountain Front Wheel', N'FW-M423', N'Black', 500, 61.0000)  
  188. GO  
  189. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (816, N'ML Mountain Front Wheel', N'FW-M762', N'Black', 500, 210.0000)  
  190. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (817, N'HL Mountain Front Wheel', N'FW-M928', N'Black', 500, 301.0000)  
  191. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (818, N'LL Road Front Wheel', N'FW-R623', N'Black', 500, 86.0000)  
  192. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (819, N'ML Road Front Wheel', N'FW-R762', N'Black', 500, 249.0000)  
  193. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (820, N'HL Road Front Wheel', N'FW-R820', N'Black', 500, 331.0000)  
  194. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (821, N'Touring Front Wheel', N'FW-T905', N'Black', 500, 219.0000)  
  195. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (822, N'ML Road Frame-W - Yellow, 38', N'FR-R72Y-38', N'Yellow', 500, 595.0000)  
  196. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (823, N'LL Mountain Rear Wheel', N'RW-M423', N'Black', 500, 88.0000)  
  197. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (824, N'ML Mountain Rear Wheel', N'RW-M762', N'Black', 500, 237.0000)  
  198. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (825, N'HL Mountain Rear Wheel', N'RW-M928', N'Black', 500, 328.0000)  
  199. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (826, N'LL Road Rear Wheel', N'RW-R623', N'Black', 500, 113.0000)  
  200. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (827, N'ML Road Rear Wheel', N'RW-R762', N'Black', 500, 276.0000)  
  201. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (828, N'HL Road Rear Wheel', N'RW-R820', N'Black', 500, 358.0000)  
  202. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (829, N'Touring Rear Wheel', N'RW-T905', N'Black', 500, 246.0000)  
  203. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (830, N'ML Mountain Frame - Black, 40', N'FR-M63B-40', N'Black', 500, 349.0000)  
  204. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (831, N'ML Mountain Frame - Black, 44', N'FR-M63B-44', N'Black', 500, 349.0000)  
  205. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (832, N'ML Mountain Frame - Black, 48', N'FR-M63B-48', N'Black', 500, 349.0000)  
  206. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (833, N'ML Road Frame-W - Yellow, 40', N'FR-R72Y-40', N'Yellow', 500, 595.0000)  
  207. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (834, N'ML Road Frame-W - Yellow, 42', N'FR-R72Y-42', N'Yellow', 500, 595.0000)  
  208. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (835, N'ML Road Frame-W - Yellow, 44', N'FR-R72Y-44', N'Yellow', 500, 595.0000)  
  209. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (836, N'ML Road Frame-W - Yellow, 48', N'FR-R72Y-48', N'Yellow', 500, 595.0000)  
  210. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (837, N'HL Road Frame - Black, 62', N'FR-R92B-62', N'Black', 500, 1432.0000)  
  211. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (838, N'HL Road Frame - Black, 44', N'FR-R92B-44', N'Black', 500, 1432.0000)  
  212. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (839, N'HL Road Frame - Black, 48', N'FR-R92B-48', N'Black', 500, 1432.0000)  
  213. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (840, N'HL Road Frame - Black, 52', N'FR-R92B-52', N'Black', 500, 1432.0000)  
  214. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (841, N'Men''s Sports Shorts, S', N'SH-M897-S', N'Black', 4, 60.0000)  
  215. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (842, N'Touring-Panniers, Large', N'PA-T100', N'Grey', 4, 125.0000)  
  216. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (849, N'Men''s Sports Shorts, M', N'SH-M897-M', N'Black', 4, 60.0000)  
  217. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (850, N'Men''s Sports Shorts, L', N'SH-M897-L', N'Black', 4, 60.0000)  
  218. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (851, N'Men''s Sports Shorts, XL', N'SH-M897-X', N'Black', 4, 60.0000)  
  219. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (852, N'Women''s Tights, S', N'TG-W091-S', N'Black', 4, 75.0000)  
  220. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (853, N'Women''s Tights, M', N'TG-W091-M', N'Black', 4, 75.0000)  
  221. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (854, N'Women''s Tights, L', N'TG-W091-L', N'Black', 4, 75.0000)  
  222. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (855, N'Men''s Bib-Shorts, S', N'SB-M891-S', N'Multi', 4, 90.0000)  
  223. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (856, N'Men''s Bib-Shorts, M', N'SB-M891-M', N'Multi', 4, 90.0000)  
  224. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (857, N'Men''s Bib-Shorts, L', N'SB-M891-L', N'Multi', 4, 90.0000)  
  225. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (858, N'Half-Finger Gloves, S', N'GL-H102-S', N'Black', 4, 25.0000)  
  226. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (859, N'Half-Finger Gloves, M', N'GL-H102-M', N'Black', 4, 25.0000)  
  227. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (860, N'Half-Finger Gloves, L', N'GL-H102-L', N'Black', 4, 25.0000)  
  228. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (861, N'Full-Finger Gloves, S', N'GL-F110-S', N'Black', 4, 38.0000)  
  229. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (862, N'Full-Finger Gloves, M', N'GL-F110-M', N'Black', 4, 38.0000)  
  230. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (863, N'Full-Finger Gloves, L', N'GL-F110-L', N'Black', 4, 38.0000)  
  231. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (864, N'Classic Vest, S', N'VE-C304-S', N'Blue', 4, 64.0000)  
  232. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (865, N'Classic Vest, M', N'VE-C304-M', N'Blue', 4, 64.0000)  
  233. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (866, N'Classic Vest, L', N'VE-C304-L', N'Blue', 4, 64.0000)  
  234. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (867, N'Women''s Mountain Shorts, S', N'SH-W890-S', N'Black', 4, 70.0000)  
  235. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (868, N'Women''s Mountain Shorts, M', N'SH-W890-M', N'Black', 4, 70.0000)  
  236. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (869, N'Women''s Mountain Shorts, L', N'SH-W890-L', N'Black', 4, 70.0000)  
  237. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (874, N'Racing Socks, M', N'SO-R809-M', N'White', 4, 9.0000)  
  238. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (875, N'Racing Socks, L', N'SO-R809-L', N'White', 4, 9.0000)  
  239. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (880, N'Hydration Pack - 70 oz.', N'HY-1023-70', N'Silver', 4, 55.0000)  
  240. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (881, N'Short-Sleeve Classic Jersey, S', N'SJ-0194-S', N'Yellow', 4, 54.0000)  
  241. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (882, N'Short-Sleeve Classic Jersey, M', N'SJ-0194-M', N'Yellow', 4, 54.0000)  
  242. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (883, N'Short-Sleeve Classic Jersey, L', N'SJ-0194-L', N'Yellow', 4, 54.0000)  
  243. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (884, N'Short-Sleeve Classic Jersey, XL', N'SJ-0194-X', N'Yellow', 4, 54.0000)  
  244. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (885, N'HL Touring Frame - Yellow, 60', N'FR-T98Y-60', N'Yellow', 500, 1004.0000)  
  245. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (886, N'LL Touring Frame - Yellow, 62', N'FR-T67Y-62', N'Yellow', 500, 334.0000)  
  246. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (887, N'HL Touring Frame - Yellow, 46', N'FR-T98Y-46', N'Yellow', 500, 1004.0000)  
  247. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (888, N'HL Touring Frame - Yellow, 50', N'FR-T98Y-50', N'Yellow', 500, 1004.0000)  
  248. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (889, N'HL Touring Frame - Yellow, 54', N'FR-T98Y-54', N'Yellow', 500, 1004.0000)  
  249. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (890, N'HL Touring Frame - Blue, 46', N'FR-T98U-46', N'Blue', 500, 1004.0000)  
  250. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (891, N'HL Touring Frame - Blue, 50', N'FR-T98U-50', N'Blue', 500, 1004.0000)  
  251. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (892, N'HL Touring Frame - Blue, 54', N'FR-T98U-54', N'Blue', 500, 1004.0000)  
  252. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (893, N'HL Touring Frame - Blue, 60', N'FR-T98U-60', N'Blue', 500, 1004.0000)  
  253. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (894, N'Rear Derailleur', N'RD-2308', N'Silver', 500, 122.0000)  
  254. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (895, N'LL Touring Frame - Blue, 50', N'FR-T67U-50', N'Blue', 500, 334.0000)  
  255. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (896, N'LL Touring Frame - Blue, 54', N'FR-T67U-54', N'Blue', 500, 334.0000)  
  256. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (897, N'LL Touring Frame - Blue, 58', N'FR-T67U-58', N'Blue', 500, 334.0000)  
  257. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (898, N'LL Touring Frame - Blue, 62', N'FR-T67U-62', N'Blue', 500, 334.0000)  
  258. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (899, N'LL Touring Frame - Yellow, 44', N'FR-T67Y-44', N'Yellow', 500, 334.0000)  
  259. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (900, N'LL Touring Frame - Yellow, 50', N'FR-T67Y-50', N'Yellow', 500, 334.0000)  
  260. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (901, N'LL Touring Frame - Yellow, 54', N'FR-T67Y-54', N'Yellow', 500, 334.0000)  
  261. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (902, N'LL Touring Frame - Yellow, 58', N'FR-T67Y-58', N'Yellow', 500, 334.0000)  
  262. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (903, N'LL Touring Frame - Blue, 44', N'FR-T67U-44', N'Blue', 500, 334.0000)  
  263. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (904, N'ML Mountain Frame-W - Silver, 40', N'FR-M63S-40', N'Silver', 500, 365.0000)  
  264. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (905, N'ML Mountain Frame-W - Silver, 42', N'FR-M63S-42', N'Silver', 500, 365.0000)  
  265. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (906, N'ML Mountain Frame-W - Silver, 46', N'FR-M63S-46', N'Silver', 500, 365.0000)  
  266. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (907, N'Rear Brakes', N'RB-9231', N'Silver', 500, 107.0000)  
  267. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (917, N'LL Mountain Frame - Silver, 42', N'FR-M21S-42', N'Silver', 500, 265.0000)  
  268. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (918, N'LL Mountain Frame - Silver, 44', N'FR-M21S-44', N'Silver', 500, 265.0000)  
  269. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (919, N'LL Mountain Frame - Silver, 48', N'FR-M21S-48', N'Silver', 500, 265.0000)  
  270. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (920, N'LL Mountain Frame - Silver, 52', N'FR-M21S-52', N'Silver', 500, 265.0000)  
  271. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (924, N'LL Mountain Frame - Black, 42', N'FR-M21B-42', N'Black', 500, 250.0000)  
  272. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (925, N'LL Mountain Frame - Black, 44', N'FR-M21B-44', N'Black', 500, 250.0000)  
  273. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (926, N'LL Mountain Frame - Black, 48', N'FR-M21B-48', N'Black', 500, 250.0000)  
  274. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (927, N'LL Mountain Frame - Black, 52', N'FR-M21B-52', N'Black', 500, 250.0000)  
  275. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (935, N'LL Mountain Pedal', N'PD-M282', N'Silver/Black', 500, 41.0000)  
  276. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (936, N'ML Mountain Pedal', N'PD-M340', N'Silver/Black', 500, 63.0000)  
  277. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (937, N'HL Mountain Pedal', N'PD-M562', N'Silver/Black', 500, 81.0000)  
  278. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (938, N'LL Road Pedal', N'PD-R347', N'Silver/Black', 500, 41.0000)  
  279. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (939, N'ML Road Pedal', N'PD-R563', N'Silver/Black', 500, 63.0000)  
  280. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (940, N'HL Road Pedal', N'PD-R853', N'Silver/Black', 500, 81.0000)  
  281. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (941, N'Touring Pedal', N'PD-T852', N'Silver/Black', 500, 81.0000)  
  282. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (942, N'ML Mountain Frame-W - Silver, 38', N'FR-M63S-38', N'Silver', 500, 365.0000)  
  283. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (943, N'LL Mountain Frame - Black, 40', N'FR-M21B-40', N'Black', 500, 250.0000)  
  284. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (944, N'LL Mountain Frame - Silver, 40', N'FR-M21S-40', N'Silver', 500, 265.0000)  
  285. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (945, N'Front Derailleur', N'FD-2342', N'Silver', 500, 92.0000)  
  286. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (948, N'Front Brakes', N'FB-9873', N'Silver', 500, 107.0000)  
  287. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (949, N'LL Crankset', N'CS-4759', N'Black', 500, 176.0000)  
  288. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (950, N'ML Crankset', N'CS-6583', N'Black', 500, 257.0000)  
  289. GO  
  290. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (951, N'HL Crankset', N'CS-9183', N'Black', 500, 405.0000)  
  291. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (952, N'Chain', N'CH-0234', N'Silver', 500, 21.0000)  
  292. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (953, N'Touring-2000 Blue, 60', N'BK-T44U-60', N'Blue', 100, 1215.0000)  
  293. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (954, N'Touring-1000 Yellow, 46', N'BK-T79Y-46', N'Yellow', 100, 2385.0000)  
  294. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (955, N'Touring-1000 Yellow, 50', N'BK-T79Y-50', N'Yellow', 100, 2385.0000)  
  295. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (956, N'Touring-1000 Yellow, 54', N'BK-T79Y-54', N'Yellow', 100, 2385.0000)  
  296. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (957, N'Touring-1000 Yellow, 60', N'BK-T79Y-60', N'Yellow', 100, 2385.0000)  
  297. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (958, N'Touring-3000 Blue, 54', N'BK-T18U-54', N'Blue', 100, 743.0000)  
  298. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (959, N'Touring-3000 Blue, 58', N'BK-T18U-58', N'Blue', 100, 743.0000)  
  299. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (960, N'Touring-3000 Blue, 62', N'BK-T18U-62', N'Blue', 100, 743.0000)  
  300. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (961, N'Touring-3000 Yellow, 44', N'BK-T18Y-44', N'Yellow', 100, 743.0000)  
  301. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (962, N'Touring-3000 Yellow, 50', N'BK-T18Y-50', N'Yellow', 100, 743.0000)  
  302. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (963, N'Touring-3000 Yellow, 54', N'BK-T18Y-54', N'Yellow', 100, 743.0000)  
  303. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (964, N'Touring-3000 Yellow, 58', N'BK-T18Y-58', N'Yellow', 100, 743.0000)  
  304. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (965, N'Touring-3000 Yellow, 62', N'BK-T18Y-62', N'Yellow', 100, 743.0000)  
  305. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (966, N'Touring-1000 Blue, 46', N'BK-T79U-46', N'Blue', 100, 2385.0000)  
  306. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (967, N'Touring-1000 Blue, 50', N'BK-T79U-50', N'Blue', 100, 2385.0000)  
  307. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (968, N'Touring-1000 Blue, 54', N'BK-T79U-54', N'Blue', 100, 2385.0000)  
  308. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (969, N'Touring-1000 Blue, 60', N'BK-T79U-60', N'Blue', 100, 2385.0000)  
  309. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (970, N'Touring-2000 Blue, 46', N'BK-T44U-46', N'Blue', 100, 1215.0000)  
  310. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (971, N'Touring-2000 Blue, 50', N'BK-T44U-50', N'Blue', 100, 1215.0000)  
  311. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (972, N'Touring-2000 Blue, 54', N'BK-T44U-54', N'Blue', 100, 1215.0000)  
  312. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (973, N'Road-350-W Yellow, 40', N'BK-R79Y-40', N'Yellow', 100, 1701.0000)  
  313. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (974, N'Road-350-W Yellow, 42', N'BK-R79Y-42', N'Yellow', 100, 1701.0000)  
  314. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (975, N'Road-350-W Yellow, 44', N'BK-R79Y-44', N'Yellow', 100, 1701.0000)  
  315. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (976, N'Road-350-W Yellow, 48', N'BK-R79Y-48', N'Yellow', 100, 1701.0000)  
  316. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (977, N'Road-750 Black, 58', N'BK-R19B-58', N'Black', 100, 540.0000)  
  317. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (978, N'Touring-3000 Blue, 44', N'BK-T18U-44', N'Blue', 100, 743.0000)  
  318. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (979, N'Touring-3000 Blue, 50', N'BK-T18U-50', N'Blue', 100, 743.0000)  
  319. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (980, N'Mountain-400-W Silver, 38', N'BK-M38S-38', N'Silver', 100, 770.0000)  
  320. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (981, N'Mountain-400-W Silver, 40', N'BK-M38S-40', N'Silver', 100, 770.0000)  
  321. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (982, N'Mountain-400-W Silver, 42', N'BK-M38S-42', N'Silver', 100, 770.0000)  
  322. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (983, N'Mountain-400-W Silver, 46', N'BK-M38S-46', N'Silver', 100, 770.0000)  
  323. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (984, N'Mountain-500 Silver, 40', N'BK-M18S-40', N'Silver', 100, 565.0000)  
  324. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (985, N'Mountain-500 Silver, 42', N'BK-M18S-42', N'Silver', 100, 565.0000)  
  325. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (986, N'Mountain-500 Silver, 44', N'BK-M18S-44', N'Silver', 100, 565.0000)  
  326. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (987, N'Mountain-500 Silver, 48', N'BK-M18S-48', N'Silver', 100, 565.0000)  
  327. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (988, N'Mountain-500 Silver, 52', N'BK-M18S-52', N'Silver', 100, 565.0000)  
  328. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (989, N'Mountain-500 Black, 40', N'BK-M18B-40', N'Black', 100, 540.0000)  
  329. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (990, N'Mountain-500 Black, 42', N'BK-M18B-42', N'Black', 100, 540.0000)  
  330. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (991, N'Mountain-500 Black, 44', N'BK-M18B-44', N'Black', 100, 540.0000)  
  331. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (992, N'Mountain-500 Black, 48', N'BK-M18B-48', N'Black', 100, 540.0000)  
  332. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (993, N'Mountain-500 Black, 52', N'BK-M18B-52', N'Black', 100, 540.0000)  
  333. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (997, N'Road-750 Black, 44', N'BK-R19B-44', N'Black', 100, 540.0000)  
  334. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (998, N'Road-750 Black, 48', N'BK-R19B-48', N'Black', 100, 540.0000)  
  335. INSERT [dbo].[tbl_product] ([ProductID], [Name], [ProductNumber], [Color], [Quantity], [Price]) VALUES (999, N'Road-750 Black, 52', N'BK-R19B-52', N'Black', 100, 540.0000)  
  336. SET IDENTITY_INSERT [dbo].[tbl_product] OFF  
  337. SET IDENTITY_INSERT [dbo].[tbl_vendor] ON   
  338.   
  339. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1492, N'Australia Bike Retailer')  
  340. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1494, N'Allenson Cycles')  
  341. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1496, N'Advanced Bicycles')  
  342. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1498, N'Trikes, Inc.')  
  343. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1500, N'Morgan Bike Accessories')  
  344. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1502, N'Cycling Master')  
  345. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1504, N'Chicago Rent-All')  
  346. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1506, N'Greenwood Athletic Company')  
  347. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1508, N'Compete Enterprises, Inc')  
  348. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1510, N'International')  
  349. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1512, N'Light Speed')  
  350. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1514, N'Training Systems')  
  351. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1516, N'Gardner Touring Cycles')  
  352. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1518, N'International Trek Center')  
  353. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1520, N'G & K Bicycle Corp.')  
  354. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1522, N'First National Sport Co.')  
  355. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1524, N'Recreation Place')  
  356. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1526, N'International Bicycles')  
  357. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1528, N'Image Makers Bike Center')  
  358. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1530, N'Comfort Road Bicycles')  
  359. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1532, N'Knopfler Cycles')  
  360. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1534, N'Ready Rentals')  
  361. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1536, N'Cruger Bike Company')  
  362. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1538, N'Vista Road Bikes')  
  363. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1540, N'Bergeron Off-Roads')  
  364. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1542, N'Hill''s Bicycle Service')  
  365. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1544, N'Circuit Cycles')  
  366. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1546, N'Green Lake Bike Company')  
  367. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1548, N'Consumer Cycles')  
  368. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1550, N'Merit Bikes')  
  369. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1552, N'Sports House')  
  370. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1554, N'WestAmerica Bicycle Co.')  
  371. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1556, N'West Junction Cycles')  
  372. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1558, N'Marsh')  
  373. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1560, N'Capital Road Cycles')  
  374. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1562, N'Norstan Bike Hut')  
  375. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1564, N'Illinois Trek & Clothing')  
  376. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1566, N'Burnett Road Warriors')  
  377. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1568, N'Custom Frames, Inc.')  
  378. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1570, N'First Rate Bicycles')  
  379. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1572, N'National Bike Association')  
  380. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1574, N'Jeff''s Sporting Goods')  
  381. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1576, N'Superior Bicycles')  
  382. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1578, N'Vision Cycles, Inc.')  
  383. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1580, N'Litware, Inc.')  
  384. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1582, N'Inner City Bikes')  
  385. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1584, N'Trey Research')  
  386. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1586, N'Mitchell Sports')  
  387. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1588, N'Signature Cycles')  
  388. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1590, N'SUPERSALES INC.')  
  389. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1592, N'Lindell')  
  390. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1594, N'Fitness Association')  
  391. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1596, N'A. Datum Corporation')  
  392. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1598, N'Continental Pro Cycles')  
  393. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1600, N'Federal Sport')  
  394. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1602, N'Beaumont Bikes')  
  395. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1604, N'Bike Satellite Inc.')  
  396. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1606, N'Northwind Traders')  
  397. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1608, N'Sport Playground')  
  398. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1610, N'Hybrid Bicycle Center')  
  399. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1612, N'Midwest Sport, Inc.')  
  400. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1614, N'Reliance Fitness, Inc.')  
  401. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1616, N'Aurora Bike Center')  
  402. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1618, N'Metro Sport Equipment')  
  403. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1620, N'Lakewood Bicycle')  
  404. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1622, N'Speed Corporation')  
  405. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1624, N'Competition Bike Training Systems')  
  406. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1626, N'Hill Bicycle Center')  
  407. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1628, N'Bicycle Specialists')  
  408. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1630, N'Indiana Bicycle Center')  
  409. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1632, N'Sport Fan Co.')  
  410. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1634, N'GMA Ski & Bike')  
  411. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1636, N'Integrated Sport Products')  
  412. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1638, N'Inline Accessories')  
  413. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1640, N'Legend Cycles')  
  414. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1642, N'Electronic Bike Co.')  
  415. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1644, N'International Sport Assoc.')  
  416. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1646, N'Electronic Bike Repair & Supplies')  
  417. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1648, N'Wide World Importers')  
  418. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1650, N'American Bicycles and Wheels')  
  419. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1652, N'Victory Bikes')  
  420. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1654, N'American Bikes')  
  421. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1656, N'Mountain Works')  
  422. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1658, N'Crowley Sport')  
  423. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1660, N'Magic Cycles')  
  424. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1662, N'Northern Bike Travel')  
  425. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1664, N'Anderson''s Custom Bikes')  
  426. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1666, N'Leaf River Terrain')  
  427. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1668, N'Touring Equipment Center')  
  428. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1670, N'Holiday Skate & Cycle')  
  429. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1672, N'Expert Bike Co')  
  430. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1674, N'Varsity Sport Co.')  
  431. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1676, N'Team Athletic Co.')  
  432. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1678, N'Proseware, Inc.')  
  433. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1680, N'Jackson Authority')  
  434. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1682, N'Premier Sport, Inc.')  
  435. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1684, N'Professional Athletic Consultants')  
  436. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1686, N'Pro Sport Industries')  
  437. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1688, N'Wood Fitness')  
  438. GO  
  439. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1690, N'Bloomington Multisport')  
  440. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1692, N'Carlson Specialties')  
  441. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1694, N'Compete, Inc.')  
  442. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1696, N'Chicago City Saddles')  
  443. INSERT [dbo].[tbl_vendor] ([VendorId], [Name]) VALUES (1698, N'Business Equipment Center')  
  444. SET IDENTITY_INSERT [dbo].[tbl_vendor] OFF  
  445. /****** Object:  StoredProcedure [dbo].[GetProductByID]    Script Date: 10/9/2018 2:47:29 PM ******/  
  446. SET ANSI_NULLS ON  
  447. GO  
  448. SET QUOTED_IDENTIFIER ON  
  449. GO  
  450. -- =============================================  
  451. -- Author:  <Author,,Name>  
  452. -- Create date: <Create Date,,>  
  453. -- Description: <Description,,>  
  454. -- =============================================  
  455. CREATE PROCEDURE [dbo].[GetProductByID]  
  456.  @product_ID INTEGER  
  457. AS  
  458. BEGIN  
  459.  SELECT tbl_product.ProductID,  
  460.      tbl_product.Name,  
  461.      tbl_product.ProductNumber,  
  462.      tbl_product.Price,  
  463.      tbl_product.Quantity,  
  464.      tbl_product.Color  
  465.     FROM tbl_product  
  466.  WHERE tbl_product.ProductID = @product_ID  
  467. END  
  468.   
  469. GO  
  470. /****** Object:  StoredProcedure [dbo].[GetProductByPriceGreaterThan1000]    Script Date: 10/9/2018 2:47:29 PM ******/  
  471. SET ANSI_NULLS ON  
  472. GO  
  473. SET QUOTED_IDENTIFIER ON  
  474. GO  
  475. -- =============================================  
  476. -- Author:  <Author,,Name>  
  477. -- Create date: <Create Date,,>  
  478. -- Description: <Description,,>  
  479. -- =============================================  
  480. CREATE PROCEDURE [dbo].[GetProductByPriceGreaterThan1000]  
  481. AS  
  482. BEGIN  
  483.  SELECT tbl_product.ProductID,  
  484.      tbl_product.Name,  
  485.      tbl_product.Price  
  486.     FROM tbl_product  
  487.  WHERE tbl_product.Price >= 1000  
  488. END  
  489.   
  490. GO 

In the above script, I have created three simple tables; i.e., department, product, and vendor, with existing data. I have also created two store procedures; i.e., "GetProductByID" store procedure will return product details of the provided product ID, and "GetProductPriceGreaterThan1000" store procedure will return the list of products whose prices are greater than equal to 1000.

Step 2

Now, create a new .NET Core web application project and name it "CoreDbSpCall" as shown below:

ASP.NET Core - Entity Framework Call Store Procedure

ASP.NET Core - Entity Framework Call Store Procedure

Step 3

Build the solution and ensure that the build is successful then restart Visual Studio.

Step 4

Now, in order for my  SQL server database to communicate with this core web application, I need to install the following library packages via "Tools->NuGet Package Manager->Manage NuGet Packages for Solution" as shown below in the following mention order:

ASP.NET Core - Entity Framework Call Store Procedure

 

  1. Microsoft.EntityFrameworkCore.SqlServer
  2. Microsoft.EntityFrameworkCore.Tools
  3. Microsoft.EntityFrameworkCore.SqlServer.Design

ASP.NET Core - Entity Framework Call Store Procedure

 

ASP.NET Core - Entity Framework Call Store Procedure

 

ASP.NET Core - Entity Framework Call Store Procedure

 

Step 5

Click "Tools->NuGet Package Manager->Package Manager Console" as shown below i.e.

ASP.NET Core - Entity Framework Call Store Procedure

 

 

ASP.NET Core - Entity Framework Call Store Procedure

 

Step 6

Type the following command inside the console as shown below. Do not forget to update your SQL server connection string configuration in this command i.e.
  1. Scaffold-DbContext "Server=SQL SERVER (e.g localhost);Database=DATABASE (e.g db_core_sp_call);Trusted_Connection=True;user id=SQL USERNAME;password=SQL PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/DB 

ASP.NET Core - Entity Framework Call Store Procedure

The above command will create the following folders and files:

 ASP.NET Core - Entity Framework Call Store Procedure

In .NET Core in order to import the database context and related tables objects we need to execute the above command and then in the inside of the created .cs database context file, we need to write appropriate business logic methods to access SQL database tables, stored procedures or queries in order to access the data. The scaffold command creates all our table's class objects; i.e. "TblDepartment.cs", "TblProduct.cs" and "TblVendor.cs". Here, understand that the returning objects of my created store procedures also require target entity framework objects which are not automatically created by the above scaffold command. So, I need to create them myself. The rule of thumb to remember here is to create object class for each stored procedure in order to easily maintain the data access. Shown below are the additional objects which I have created for my data access through stored procedures:

ASP.NET Core - Entity Framework Call Store Procedure

 

Model\DB\SpGetProductByID.cs
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Threading.Tasks;  
  5.   
  6. namespace CoreDbSpCall.Models.DB  
  7. {  
  8.     public class SpGetProductByID  
  9.     {  
  10.         public int ProductId { getset; }  
  11.         public string Name { getset; }  
  12.         public string ProductNumber { getset; }  
  13.         public decimal Price { getset; }  
  14.         public int Quantity { getset; }  
  15.         public string Color { getset; }  
  16.     }  

Model\DB\SpGetProductByPriceGreaterThan1000.cs

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Threading.Tasks;  
  5.   
  6. namespace CoreDbSpCall.Models.DB  
  7. {  
  8.     public class SpGetProductByPriceGreaterThan1000  
  9.     {  
  10.         public int ProductId { getset; }  
  11.         public string Name { getset; }  
  12.         public decimal Price { getset; }  
  13.     }  

Step 7

Now, create "Models\ProductViewModel.cs" file and replace the following code in this file:

  1. //-----------------------------------------------------------------------  
  2. // <copyright file="ProductViewModel.cs" company="None">  
  3. //     Copyright (c) Allow to distribute this code and utilize this code for personal or commercial purpose.  
  4. // </copyright>  
  5. // <author>Asma Khalid</author>  
  6. //-----------------------------------------------------------------------  
  7.   
  8. namespace CoreDbSpCall.Models  
  9. {  
  10.     using System.Collections.Generic;  
  11.     using System.ComponentModel.DataAnnotations;  
  12.     using CoreDbSpCall.Models;  
  13.     using CoreDbSpCall.Models.DB;  
  14.   
  15.     /// <summary>  
  16.     /// Product view model class.  
  17.     /// </summary>  
  18.     public class ProductViewModel  
  19.     {  
  20.         #region Properties  
  21.   
  22.         /// <summary>  
  23.         /// Gets or sets product ID property.  
  24.         /// </summary>  
  25.         [Required]  
  26.         [Display(Name = "Product ID")]  
  27.         public int ProductID { getset; }  
  28.   
  29.         /// <summary>  
  30.         /// Gets or sets to products list whose price is greater than equal to 1000 property.  
  31.         /// </summary>  
  32.         [Display(Name = "Products with Price >= 1000")]  
  33.         public List<SpGetProductByPriceGreaterThan1000> ProductsGreaterThan1000 { getset; }  
  34.   
  35.         /// <summary>  
  36.         /// Gets or sets to product detail by product Id property.  
  37.         /// </summary>  
  38.         [Display(Name = "Product Detail")]  
  39.         public SpGetProductByID ProductDetail { getset; }  
  40.  
  41.         #endregion  
  42.     }  

The above class is a simple view model object class which I have created to interact with the user and to display data on the web application.

Step 8

Now, open "Models\DB\db_core_sp_callContext.cs"file and replace the following code in it:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Data.SqlClient;  
  4. using System.Threading.Tasks;  
  5. using Microsoft.EntityFrameworkCore;  
  6. using Microsoft.EntityFrameworkCore.Metadata;  
  7.   
  8. namespace CoreDbSpCall.Models.DB  
  9. {  
  10.     public partial class db_core_sp_callContext : DbContext  
  11.     {  
  12.         public db_core_sp_callContext()  
  13.         {  
  14.         }  
  15.   
  16.         public db_core_sp_callContext(DbContextOptions<db_core_sp_callContext> options)  
  17.             : base(options)  
  18.         {  
  19.         }  
  20.   
  21.         public virtual DbSet<TblDepartment> TblDepartment { getset; }  
  22.         public virtual DbSet<TblProduct> TblProduct { getset; }  
  23.         public virtual DbSet<TblVendor> TblVendor { getset; }  
  24.   
  25.         ////protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)  
  26.         ////{  
  27.         ////    if (!optionsBuilder.IsConfigured)  
  28.         ////    {  
  29.         ////        optionsBuilder.UseSqlServer("Server=SQL SERVER;Database=DATABASE;Trusted_Connection=True;user id=SQL USERNAME;password=SQL PASSWORD;");  
  30.         ////    }  
  31.         ////}  
  32.   
  33.         protected override void OnModelCreating(ModelBuilder modelBuilder)  
  34.         {  
  35.             modelBuilder.Entity<TblDepartment>(entity =>  
  36.             {  
  37.                 entity.HasKey(e => e.DepartmentId);  
  38.   
  39.                 entity.ToTable("tbl_department");  
  40.   
  41.                 entity.Property(e => e.GroupName).IsRequired();  
  42.   
  43.                 entity.Property(e => e.Name).IsRequired();  
  44.             });  
  45.   
  46.             modelBuilder.Entity<TblProduct>(entity =>  
  47.             {  
  48.                 entity.HasKey(e => e.ProductId);  
  49.   
  50.                 entity.ToTable("tbl_product");  
  51.   
  52.                 entity.Property(e => e.ProductId).HasColumnName("ProductID");  
  53.   
  54.                 entity.Property(e => e.Color).IsRequired();  
  55.   
  56.                 entity.Property(e => e.Name).IsRequired();  
  57.   
  58.                 entity.Property(e => e.Price).HasColumnType("money");  
  59.   
  60.                 entity.Property(e => e.ProductNumber).IsRequired();  
  61.             });  
  62.   
  63.             modelBuilder.Entity<TblVendor>(entity =>  
  64.             {  
  65.                 entity.HasKey(e => e.VendorId);  
  66.   
  67.                 entity.ToTable("tbl_vendor");  
  68.   
  69.                 entity.Property(e => e.Name).IsRequired();  
  70.             });  
  71.   
  72.             // [Asma Khalid]: Regster store procedure custom object.  
  73.             modelBuilder.Query<SpGetProductByPriceGreaterThan1000>();  
  74.             modelBuilder.Query<SpGetProductByID>();  
  75.         }  
  76.  
  77.         #region Get products whose price is greater than equal to 1000 store procedure method.  
  78.   
  79.         /// <summary>  
  80.         /// Get products whose price is greater than equal to 1000 store procedure method.  
  81.         /// </summary>  
  82.         /// <returns>Returns - List of products whose price is greater than equal to 1000</returns>  
  83.         public async Task<List<SpGetProductByPriceGreaterThan1000>> GetProductByPriceGreaterThan1000Async()  
  84.         {  
  85.             // Initialization.  
  86.             List<SpGetProductByPriceGreaterThan1000> lst = new List<SpGetProductByPriceGreaterThan1000>();  
  87.   
  88.             try  
  89.             {  
  90.                 // Processing.  
  91.                 string sqlQuery = "EXEC [dbo].[GetProductByPriceGreaterThan1000] ";  
  92.   
  93.                 lst = await this.Query<SpGetProductByPriceGreaterThan1000>().FromSql(sqlQuery).ToListAsync();  
  94.             }  
  95.             catch (Exception ex)  
  96.             {  
  97.                 throw ex;  
  98.             }  
  99.   
  100.             // Info.  
  101.             return lst;  
  102.         }  
  103.  
  104.         #endregion  
  105.  
  106.         #region Get product by ID store procedure method.  
  107.   
  108.         /// <summary>  
  109.         /// Get product by ID store procedure method.  
  110.         /// </summary>  
  111.         /// <param name="productId">Product ID value parameter</param>  
  112.         /// <returns>Returns - List of product by ID</returns>  
  113.         public async Task<List<SpGetProductByID>> GetProductByIDAsync(int productId)  
  114.         {  
  115.             // Initialization.  
  116.             List<SpGetProductByID> lst = new List<SpGetProductByID>();  
  117.   
  118.             try  
  119.             {  
  120.                 // Settings.  
  121.                 SqlParameter usernameParam = new SqlParameter("@product_ID", productId.ToString() ?? (object)DBNull.Value);  
  122.   
  123.                 // Processing.  
  124.                 string sqlQuery = "EXEC [dbo].[GetProductByID] " +  
  125.                                     "@product_ID";  
  126.   
  127.                 lst = await this.Query<SpGetProductByID>().FromSql(sqlQuery, usernameParam).ToListAsync();  
  128.             }  
  129.             catch (Exception ex)  
  130.             {  
  131.                 throw ex;  
  132.             }  
  133.   
  134.             // Info.  
  135.             return lst;  
  136.         }  
  137.  
  138.         #endregion  
  139.     }  

The changes included in the above code are either removal or commented out code of/for "OnConfiguring(...)" method, registration of new objects to access returning data from store procedure and creation of methods that will call database store procedures; i.e. "GetProductByIDAsync(...)" and "GetProductByPriceGreaterThan1000Async(...)". All other code is auto-generated by the scaffold command. In order to access data from stored procedures, I need to register my store procedures access objects with the following lines of code in "OnModelCreating(...)" method as shown below:

  1. // [Asma Khalid]: Register store procedure custom object.  
  2. modelBuilder.Query<SpGetProductByPriceGreaterThan1000>();  
  3. modelBuilder.Query<SpGetProductByID>(); 

Step 9

In order to access the SQL server database, I need to store my database connection string in "appsettings.json" file which is the recommended way. So, open "appsettings.json" file and replace the following code in it:
  1. {  
  2.   "ConnectionStrings": {  
  3.     "db_core_ef_first""Server=SQL SERVER;Database=DATABASE;Trusted_Connection=True;user id=SQL USERNAME;password=SQL PASSWORD;"  
  4.   },  
  5.   "Logging": {  
  6.     "IncludeScopes"false,  
  7.     "LogLevel": {  
  8.       "Default""Warning"  
  9.     }  
  10.   }  

Do not forget to update your SQL server configurations in the above connection string.

Step 10

Now, I need to register my database context as .NET Microservices with the .net core framework in order to access my database within my application. To do so, open the "Startup.cs" file and add the following line of code at the end of "ConfigureServices(...)" method i.e.
  1. // [Asma Khalid]: Register SQL database configuration context as services.    
  2. services.AddDbContext<db_core_sp_callContext>(options => options.UseSqlServer(Configuration.GetConnectionString("db_core_sp_call"))); 

Step 11

Do a little cleanup of your folder hierarchy:
  1. Except "Pages\_ViewImports.cshtml" file, "Pages\_ViewStart.cshtml" file, "Pages\Error.cshtml" file and Shared folder, remove all other files inside "Pages" folder.

Step 12

Open, "Pages\Shared\_Layout.cshtml" file and replace the following code in it:

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8" />  
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0" />  
  6.     <title>@ViewBag.Title</title>  
  7.   
  8.     <environment include="Development">  
  9.         <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />  
  10.         <link rel="stylesheet" href="~/css/site.css" />  
  11.     </environment>  
  12.     <environment exclude="Development">  
  13.         <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"  
  14.               asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"  
  15.               asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />  
  16.         <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />  
  17.     </environment>  
  18. </head>  
  19. <body>  
  20.     <nav class="navbar navbar-inverse navbar-fixed-top">  
  21.         <div class="container">  
  22.             <div class="navbar-header">  
  23.                 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">  
  24.                     <span class="sr-only">Toggle navigation</span>  
  25.                     <span class="icon-bar"></span>  
  26.                     <span class="icon-bar"></span>  
  27.                     <span class="icon-bar"></span>  
  28.                 </button>  
  29.   
  30.             </div>  
  31.             <div class="navbar-collapse collapse">  
  32.                 <ul class="nav navbar-nav">  
  33.                     <li></li>  
  34.                 </ul>  
  35.             </div>  
  36.         </div>  
  37.     </nav>  
  38.   
  39.     <div class="container body-content">  
  40.         @RenderBody()  
  41.         <hr />  
  42.         <footer>  
  43.             <center>  
  44.                 <p><strong>Copyright © @DateTime.Now.Year - <a href="http://wwww.asmak9.com/">Asma's Blog</a>.</strong> All rights reserved.</p>  
  45.             </center>  
  46.         </footer>  
  47.     </div>  
  48.   
  49.     <environment include="Development">  
  50.         <script src="~/lib/jquery/dist/jquery.js"></script>  
  51.         <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>  
  52.         <script src="~/js/site.js" asp-append-version="true"></script>  
  53.     </environment>  
  54.     <environment exclude="Development">  
  55.         <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"  
  56.                 asp-fallback-src="~/lib/jquery/dist/jquery.min.js"  
  57.                 asp-fallback-test="window.jQuery"  
  58.                 crossorigin="anonymous"  
  59.                 integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT">  
  60.         </script>  
  61.         <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"  
  62.                 asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"  
  63.                 asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"  
  64.                 crossorigin="anonymous"  
  65.                 integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">  
  66.         </script>  
  67.         <script src="~/js/site.min.js" asp-append-version="true"></script>  
  68.     </environment>  
  69.   
  70.     @RenderSection("Scripts", required: false)  
  71. </body>  
  72. </html> 

In the above code, I have created a basic layout page for my web application.

Step 13

Now, create "Pages\Index.cshtml" file with model and replace the following code in it:

  1. @page   
  2.   
  3. @model IndexModel  
  4.   
  5. @{  
  6.     ViewBag.Title = "ASP.NET Core - Entity Framework Call Store Procedure";  
  7. }  
  8.   
  9. <div class="row">  
  10.     <div class="col-md-offset-2 col-md-12">  
  11.         <h2>ASP.NET Core - Entity Framework Call Store Procedure</h2>  
  12.     </div>  
  13. </div>  
  14.   
  15. <hr />  
  16.   
  17. <div class="row">  
  18.     <div class="col-md-8">  
  19.         <section>  
  20.             <form method="post" role="form" class="form-horizontal">  
  21.                 @Html.AntiForgeryToken()  
  22.   
  23.                 <h4>Get Product Detail.</h4>  
  24.                 <hr />  
  25.   
  26.                 @Html.ValidationSummary(true, "", new { @class = "text-danger" })  
  27.   
  28.                 <div class="form-group">  
  29.                     @Html.LabelFor(m => m.ProductVM.ProductID, new { @class = "col-md-4 control-label" })  
  30.                     <div class="col-md-4">  
  31.                         @Html.TextBoxFor(m => m.ProductVM.ProductID, new { @class = "form-control" })  
  32.                         @Html.ValidationMessageFor(m => m.ProductVM.ProductID, "", new { @class = "text-danger" })  
  33.                     </div>  
  34.                 </div>  
  35.   
  36.                 <div class="form-group">  
  37.                     <div class="col-md-offset-4 col-md-10">  
  38.                         <button asp-page-handler="Detail" class="btn btn-default">Get Product Detail</button>  
  39.                     </div>  
  40.                 </div>  
  41.             </form>  
  42.         </section>  
  43.     </div>  
  44. </div>  
  45.   
  46. <hr />  
  47.   
  48. @if (Model.ProductVM != null &&  
  49. Model.ProductVM.ProductID > 0)  
  50. {  
  51.     <div class="row">  
  52.         <div class="col-md-offset-4 col-md-8">  
  53.             <h3>Product Details </h3>  
  54.         </div>  
  55.     </div>  
  56.   
  57.     <hr />  
  58.   
  59.     <div class="row">  
  60.         <div class="col-md-offset-1 col-md-8">  
  61.             <section>  
  62.                 <table class="table table-bordered table-striped">  
  63.                     <tbody>  
  64.                         <tr>  
  65.                             <th style="text-align: left;">Product ID</th>  
  66.                             <td style="text-align: center;">@Model.ProductVM.ProductDetail.ProductId</td>  
  67.                             <th style="text-align: left;">Product Number</th>  
  68.                             <td style="text-align: center;">@Model.ProductVM.ProductDetail.ProductNumber</td>  
  69.                         </tr>  
  70.   
  71.                         <tr>  
  72.                             <th style="text-align: left;">Product Name</th>  
  73.                             <td style="text-align: center;">@Model.ProductVM.ProductDetail.Name</td>  
  74.                             <th style="text-align: left;">Price</th>  
  75.                             <td style="text-align: center;">@Model.ProductVM.ProductDetail.Price.ToString("#,##0")</td>  
  76.                         </tr>  
  77.   
  78.                         <tr>  
  79.                             <th style="text-align: left;">Quantity</th>  
  80.                             <td style="text-align: center;">@Model.ProductVM.ProductDetail.Quantity</td>  
  81.                             <th style="text-align: left;">Color</th>  
  82.                             <td style="text-align: center;">@Model.ProductVM.ProductDetail.Color</td>  
  83.                         </tr>  
  84.   
  85.                     </tbody>  
  86.                 </table>  
  87.             </section>  
  88.         </div>  
  89.     </div>  
  90.   
  91.     <hr />  
  92. }  
  93.   
  94. <div class="row">  
  95.     <div class="col-md-offset-4 col-md-8">  
  96.         <h3>List of Products </h3>  
  97.     </div>  
  98. </div>  
  99.   
  100. <hr />  
  101.   
  102. @if (Model.ProductVM != null &&  
  103. Model.ProductVM.ProductsGreaterThan1000 != null &&  
  104. Model.ProductVM.ProductsGreaterThan1000.Count > 0)  
  105. {  
  106.     <div class="row">  
  107.         <div class="col-md-offset-1 col-md-8">  
  108.             <section>  
  109.                 <table class="table table-bordered table-striped">  
  110.                     <thead>  
  111.                         <tr>  
  112.                             <th style="text-align: center;">Sr.</th>  
  113.                             <th style="text-align: center;">Product ID</th>  
  114.                             <th style="text-align: center;">Product Name</th>  
  115.                             <th style="text-align: center;">Price</th>  
  116.                         </tr>  
  117.                     </thead>  
  118.   
  119.                     <tbody>  
  120.                         @for (int i = 0; i < Model.ProductVM.ProductsGreaterThan1000.Count; i++)  
  121.                         {  
  122.                             <tr>  
  123.                                 <td style="text-align: center;">@(i + 1)</td>  
  124.                                 <td style="text-align: center;">@Model.ProductVM.ProductsGreaterThan1000[i].ProductId</td>  
  125.                                 <td style="text-align: center;">@Model.ProductVM.ProductsGreaterThan1000[i].Name</td>  
  126.                                 <td style="text-align: center;">@Model.ProductVM.ProductsGreaterThan1000[i].Price.ToString("#,##0") </td>  
  127.                             </tr>  
  128.                         }  
  129.                     </tbody>  
  130.                 </table>  
  131.             </section>  
  132.         </div>  
  133.     </div>  

In the above code, I have created a simple page that will display product list, product details for provided product ID and a form to input product ID.

Step 14

Open, "Pages\Index.cshtml.cs" file and replace the following code in it:

  1. //-----------------------------------------------------------------------  
  2. // <copyright file="Index.cshtml.cs" company="None">  
  3. //     Copyright (c) Allow to distribute this code and utilize this code for personal or commercial purpose.  
  4. // </copyright>  
  5. // <author>Asma Khalid</author>  
  6. //-----------------------------------------------------------------------  
  7.   
  8. namespace CoreDbSpCall.Pages  
  9. {  
  10.     using System;  
  11.     using System.Collections.Generic;  
  12.     using System.Linq;  
  13.     using System.Security.Claims;  
  14.     using System.Threading.Tasks;  
  15.     using CoreDbSpCall.Models;  
  16.     using CoreDbSpCall.Models.DB;  
  17.     using Microsoft.AspNetCore.Mvc;  
  18.     using Microsoft.AspNetCore.Mvc.RazorPages;  
  19.     using Microsoft.EntityFrameworkCore;  
  20.   
  21.     /// <summary>  
  22.     /// Index page model class.  
  23.     /// </summary>  
  24.     public class IndexModel : PageModel  
  25.     {  
  26.         #region Private Properties.  
  27.   
  28.         /// <summary>  
  29.         /// Database Manager property.  
  30.         /// </summary>  
  31.         private readonly db_core_sp_callContext databaseManager;  
  32.  
  33.         #endregion  
  34.  
  35.         #region Default Constructor method.  
  36.   
  37.         /// <summary>  
  38.         /// Initializes a new instance of the <see cref="IndexModel"/> class.  
  39.         /// </summary>  
  40.         /// <param name="databaseManagerContext">Database manager context parameter</param>  
  41.         public IndexModel(db_core_sp_callContext databaseManagerContext)  
  42.         {  
  43.             try  
  44.             {  
  45.                 // Settings.  
  46.                 this.databaseManager = databaseManagerContext;  
  47.             }  
  48.             catch (Exception ex)  
  49.             {  
  50.                 // Info  
  51.                 Console.Write(ex);  
  52.             }  
  53.         }  
  54.  
  55.         #endregion  
  56.  
  57.         #region Public Properties  
  58.   
  59.         /// <summary>  
  60.         /// Gets or sets department model property.  
  61.         /// </summary>  
  62.         [BindProperty]  
  63.         public ProductViewModel ProductVM { getset; }  
  64.  
  65.         #endregion  
  66.  
  67.         #region On Get method.  
  68.   
  69.         /// <summary>  
  70.         /// GET: /Index/productId  
  71.         /// </summary>  
  72.         /// <param name="productId">Product ID parameter</param>  
  73.         /// <returns> Returns - index page</returns>  
  74.          public async Task OnGet(int productId = 0)  
  75.         {  
  76.             // Initialization.  
  77.             this.ProductVM = new ProductViewModel();  
  78.             this.ProductVM.ProductID = productId;  
  79.             this.ProductVM.ProductDetail = new SpGetProductByID();  
  80.             this.ProductVM.ProductsGreaterThan1000 = new List<SpGetProductByPriceGreaterThan1000>();  
  81.   
  82.             try  
  83.             {  
  84.                 // Verification.  
  85.                 if (this.ProductVM.ProductID > 0)  
  86.                 {  
  87.                     // Settings.  
  88.                     var details = await this.databaseManager.GetProductByIDAsync(this.ProductVM.ProductID);  
  89.                     this.ProductVM.ProductDetail = details.First();  
  90.                 }  
  91.   
  92.                 // Settings.  
  93.                 this.ProductVM.ProductsGreaterThan1000 = await this.databaseManager.GetProductByPriceGreaterThan1000Async();  
  94.             }  
  95.             catch (Exception ex)  
  96.             {  
  97.                 // Info  
  98.                 Console.Write(ex);  
  99.             }  
  100.         }  
  101.  
  102.         #endregion  
  103.  
  104.         #region On Post Detail method.  
  105.   
  106.         /// <summary>  
  107.         /// POST: /Index/Detail  
  108.         /// </summary>  
  109.         /// <returns>Returns - Appropriate page </returns>  
  110.         public IActionResult OnPostDetail()  
  111.         {  
  112.             try  
  113.             {  
  114.                 // Verification.  
  115.                 if (ModelState.IsValid)  
  116.                 {  
  117.                     // Settings.  
  118.                     string path = "/Index";  
  119.   
  120.                     // Info.  
  121.                     return this.RedirectToPage(path, new { productId = this.ProductVM.ProductID });  
  122.                 }  
  123.             }  
  124.             catch (Exception ex)  
  125.             {  
  126.                 // Info  
  127.                 Console.Write(ex);  
  128.             }  
  129.   
  130.             // Info.  
  131.             return this.Page();  
  132.         }  
  133.  
  134.         #endregion  
  135.     }  

The above piece of code contains database context access property, view model binding property, an overload constructor, OnGet(...) method with passing parameter to display product details of specific product ID and OnPostDetail(...) method which will post the provided product ID to the index page in order to display specific product details.

Step 15

Execute the project and you will be able to see the following:

ASP.NET Core - Entity Framework Call Store Procedure

 

ASP.NET Core - Entity Framework Call Store Procedure

 

Conclusion

In this article, you learned to call stored procedures with custom returning objects by using entity framework. You also learned to scaffold existing database context into your web application via NuGet Package Console command. You also learned to register your custom returning data access objects for stored procedures in the database context file and you also learned about the registration of database context .net microservices with the .net core framework in order to connect your web application with the SQL server database.