文章目录
前言
在ASP.NET3.5中,引入了一种新技术LINQ,这种技术使得查询等数据访问操作完全与.NET语言整合,实现了通过.NET语言访问数据库的功能.
VSC2017提供了利用LINQ to SQL 工具以方便运用LINQ技术执行数据访问操作,但是该工具在VSC2017中被看作单个组件,需要人为选中后才能被安装.
Visual Studio Installer安装LINQto SQL 工具
-
电脑搜索Visual Studio Installer
-
Visual Studio Installer 选择修改
-
安装LINQ to SQL
安装成功之后,需要重新启动visual studio
建立数据库
用VS打开本地建立一个数据库(.sql后缀)文件,然后进行后续操作(具体操作展示如下图所示)
// 下面的这些代码是我的MyPetShop.sql文件里的全部代码
USE master;
GO
/*建立空的MyPetShop数据库*/
/*请根据实际环境更改数据库文件和日志文件的存放路径*/
CREATE DATABASE MyPetShop
ON
( NAME = MyPetShop,
FILENAME = 'E:\大三上学期学习文件\WEB\Test\WebSite1\App_Data\MyPetShop.mdf',
SIZE = 5MB,
MAXSIZE = 50MB,
FILEGROWTH = 1MB )
LOG ON
( NAME = MyPetShop_log,
FILENAME = 'E:\大三上学期学习文件\WEB\Test\WebSite1\App_Data\MyPetShop_log.ldf',
SIZE = 3MB,
MAXSIZE = 25MB,
FILEGROWTH = 1MB )
COLLATE Chinese_PRC_CS_AS;
GO
USE MyPetShop
/*分别建立CartItem、Category、Customer、Order、OrderItem、Product、Supplier等数据表的结构*/
CREATE TABLE [Category] ([CategoryId] int identity PRIMARY KEY,
[Name] nvarchar(80) NULL,
[Descn] nvarchar(255) NULL)
CREATE TABLE [Customer]([CustomerId] int identity PRIMARY KEY,
[Name] [nvarchar](80) NOT NULL,
[Password] [nvarchar](80) NOT NULL,
[Email] [nvarchar](80) NOT NULL)
CREATE TABLE [Order] ([OrderId] int identity PRIMARY KEY,
[CustomerId] int NOT NULL REFERENCES [Customer]([CustomerId]),
[UserName] nvarchar(80) NOT NULL,
[OrderDate] datetime NOT NULL,
[Addr1] nvarchar(80) NULL,
[Addr2] nvarchar(80) NULL,
[City] nvarchar(80) NULL,
[State] nvarchar(80) NULL,
[Zip] nvarchar(6) NULL,
[Phone] nvarchar(40) NULL,
[Status] nvarchar(10) NULL)
CREATE TABLE [OrderItem]([ItemId] int identity PRIMARY KEY,
[OrderId] int NOT NULL REFERENCES [Order]([OrderId]),
[ProName] nvarchar(80),
[ListPrice] decimal(10, 2) NULL,
[Qty] int NOT NULL,
[TotalPrice] decimal(10, 2) NULL)
CREATE TABLE [Supplier] ([SuppId] int identity PRIMARY KEY,
[Name] nvarchar(80) NULL,
[Addr1] nvarchar(80) NULL,
[Addr2] nvarchar(80) NULL,
[City] nvarchar(80) NULL,
[State] nvarchar(80) NULL,
[Zip] nvarchar(6) NULL,
[Phone] nvarchar(40) NULL)
CREATE TABLE [Product] ([ProductId] int identity PRIMARY KEY,
[CategoryId] int NOT NULL REFERENCES [Category]([CategoryId]),
[ListPrice] decimal(10, 2) NULL,
[UnitCost] decimal(10, 2) NULL,
[SuppId] int NULL REFERENCES [Supplier]([SuppId]),
[Name] nvarchar(80) NULL,
[Descn] nvarchar(255) NULL,
[Image] nvarchar(80) NULL,
[Qty] int NOT NULL)
CREATE TABLE [CartItem]([CartItemId] int identity PRIMARY KEY,
[CustomerId] int NOT NULL REFERENCES [Customer]([CustomerId]),
[ProId] int NOT NULL REFERENCES [Product]([ProductId]),
[ProName] [nvarchar](80) NOT NULL,
[ListPrice] [decimal](10, 2) NOT NULL,
[Qty] [int] NOT NULL)
/*在Category表中插入示例数据*/
INSERT INTO [Category] VALUES ('Fish', 'Fish')
INSERT INTO [Category] VALUES ('Bugs', 'Bugs')
INSERT INTO [Category] VALUES ('Backyard', 'Backyard')
INSERT INTO [Category] VALUES ('Birds', 'Birds')
INSERT INTO [Category] VALUES ('Endangered', 'Endangered')
/*在Customer表中插入示例数据*/
INSERT [Customer] ([Name], [Password], [Email]) VALUES ('admin', '123', 'admin@qq.com')
INSERT [Customer] ([Name], [Password], [Email]) VALUES ('jack', '123', 'jack@qq.com')
/*在Supplier表中插入示例数据*/
INSERT INTO [Supplier] VALUES ('XYZ Pets', '600 Avon Way', '', 'Los Angeles', 'CA', '94024', '212-947-0797')
INSERT INTO [Supplier] VALUES ('ABC Pets', '700 Abalone Way', '', 'San Francisco', 'CA', '94024', '415-947-0797')
/*在Product表中插入示例数据*/
INSERT INTO [Product] VALUES (1, 12.1, 11.4, 1, 'Meno', 'Meno', '~/Prod_Images/Fish/meno.gif', 100)
INSERT INTO [Product] VALUES (1, 28.5, 25.5, 1, 'Eucalyptus', 'Eucalyptus', '~/Prod_Images/Fish/eucalyptus.gif', 100)
INSERT INTO [Product] VALUES (2, 23.4, 11.4, 1, 'Ant', 'Ant', '~/Prod_Images/Bugs/ant.gif', 100)
INSERT INTO [Product] VALUES (2, 24.7, 22.2, 1, 'Butterfly', 'Butterfly', '~/Prod_Images/Bugs/butterfly.gif', 100)
INSERT INTO [Product] VALUES (3, 38.5, 37.2, 1, 'Cat', 'Cat', '~/Prod_Images/Backyard/cat.gif', 100)
INSERT INTO [Product] VALUES (3, 40.4, 38.7, 1, 'Zebra', 'Zebra', '~/Prod_Images/Backyard/zebra.gif', 100)
INSERT INTO [Product] VALUES (4, 45.5, 44.2, 1, 'Domestic', 'Domestic', '~/Prod_Images/Birds/domestic.gif', 100)
INSERT INTO [Product] VALUES (4, 25.2, 23.5, 1, 'Flowerloving', 'Flowerloving', '~/Prod_Images/Birds/flowerloving.gif', 100)
INSERT INTO [Product] VALUES (5, 47.7, 45.5, 1, 'Panda', 'Panda', '~/Prod_Images/Endangered/panda.gif', 100)
INSERT INTO [Product] VALUES (5, 35.5, 33.5, 1, 'Pointy', 'Pointy', '~/Prod_Images/Endangered/pointy.gif', 100)
GO
/*创建CategoryInsert存储过程*/
CREATE PROCEDURE CategoryInsert
(
@Name varchar(80),
@Descn varchar(255)
)
AS
INSERT INTO Category(Name,Descn) VALUES (@Name,@Descn);
RETURN
GO
USE master;
GO
在VS2019中打开MyPetShop.sql文件(VS2017一样,笔者是2019)
(下图中的第②个步骤是不需要操作的,在这里只为了让大家注意一下.)
创建App_Data文件夹 因为在VS里,数据库是存在App_Data文件夹里面的.
添加完App_Data文件夹后,将数据库MyPetShop.sql添加到App_Data文件夹里.
即修改MyPetShop.sql文件里的两个文件路径(如下图所示)
上图绿框所示的路径实际应该为本项目的App_Data文件夹所在的路径
查找本项目的App_Data文件夹所在的路径方法展示如下图所示:
将上图中查找到的路径复制,然后添加到绿框里
修改完路径之后点击VS里的保存(Ctrl+S),然后进行数据库的连接
连接完数据库之后进行数据库的运行----执行MyPetShop.sql文件中的SQL语句建立MyPetShop数据库.
运行之后查看运行结果来判断建立数据库是否成功
运行成功标志:
1.运行结果会显示行受影响
2.App_Data文件夹里会自动导入MyPetShop.sql文件
运行失败类型:
失败原因是: .sql文件没有成功导入到App_Data文件夹里.
修改方案思路: 在App_Data文件夹里新建一个sql文件 (新建的sql文件的名称和案例里的数据库名称一样即MyPetShop.sql),然后把之前加载的MyPetShop.sql文件的部分代码(创建表部分的代码,创建数据库的代码不需要复制,因为在上面我们已经创建了一个新的同名数据库了)复制到新创建的sql文件里,然后执行连接运行即可成功.
// 下面这些是需要复制的部分MyPetShop.sql文件里的代码---复制代码添加到你们的数据库的时候记得把我这行的注释去掉,不然会报错
CREATE TABLE [Category] ([CategoryId] int identity PRIMARY KEY,
[Name] nvarchar(80) NULL,
[Descn] nvarchar(255) NULL)
CREATE TABLE [Customer]([CustomerId] int identity PRIMARY KEY,
[Name] [nvarchar](80) NOT NULL,
[Password] [nvarchar](80) NOT NULL,
[Email] [nvarchar](80) NOT NULL)
CREATE TABLE [Order] ([OrderId] int identity PRIMARY KEY,
[CustomerId] int NOT NULL REFERENCES [Customer]([CustomerId]),
[UserName] nvarchar(80) NOT NULL,
[OrderDate] datetime NOT NULL,
[Addr1] nvarchar(80) NULL,
[Addr2] nvarchar(80) NULL,
[City] nvarchar(80) NULL,
[State] nvarchar(80) NULL,
[Zip] nvarchar(6) NULL,
[Phone] nvarchar(40) NULL,
[Status] nvarchar(10) NULL)
CREATE TABLE [OrderItem]([ItemId] int identity PRIMARY KEY,
[OrderId] int NOT NULL REFERENCES [Order]([OrderId]),
[ProName] nvarchar(80),
[ListPrice] decimal(10, 2) NULL,
[Qty] int NOT NULL,
[TotalPrice] decimal(10, 2) NULL)
CREATE TABLE [Supplier] ([SuppId] int identity PRIMARY KEY,
[Name] nvarchar(80) NULL,
[Addr1] nvarchar(80) NULL,
[Addr2] nvarchar(80) NULL,
[City] nvarchar(80) NULL,
[State] nvarchar(80) NULL,
[Zip] nvarchar(6) NULL,
[Phone] nvarchar(40) NULL)
CREATE TABLE [Product] ([ProductId] int identity PRIMARY KEY,
[CategoryId] int NOT NULL REFERENCES [Category]([CategoryId]),
[ListPrice] decimal(10, 2) NULL,
[UnitCost] decimal(10, 2) NULL,
[SuppId] int NULL REFERENCES [Supplier]([SuppId]),
[Name] nvarchar(80) NULL,
[Descn] nvarchar(255) NULL,
[Image] nvarchar(80) NULL,
[Qty] int NOT NULL)
CREATE TABLE [CartItem]([CartItemId] int identity PRIMARY KEY,
[CustomerId] int NOT NULL REFERENCES [Customer]([CustomerId]),
[ProId] int NOT NULL REFERENCES [Product]([ProductId]),
[ProName] [nvarchar](80) NOT NULL,
[ListPrice] [decimal](10, 2) NOT NULL,
[Qty] [int] NOT NULL)
/*在Category表中插入示例数据*/
INSERT INTO [Category] VALUES ('Fish', 'Fish')
INSERT INTO [Category] VALUES ('Bugs', 'Bugs')
INSERT INTO [Category] VALUES ('Backyard', 'Backyard')
INSERT INTO [Category] VALUES ('Birds', 'Birds')
INSERT INTO [Category] VALUES ('Endangered', 'Endangered')
/*在Customer表中插入示例数据*/
INSERT [Customer] ([Name], [Password], [Email]) VALUES ('admin', '123', 'admin@qq.com')
INSERT [Customer] ([Name], [Password], [Email]) VALUES ('jack', '123', 'jack@qq.com')
/*在Supplier表中插入示例数据*/
INSERT INTO [Supplier] VALUES ('XYZ Pets', '600 Avon Way', '', 'Los Angeles', 'CA', '94024', '212-947-0797')
INSERT INTO [Supplier] VALUES ('ABC Pets', '700 Abalone Way', '', 'San Francisco', 'CA', '94024', '415-947-0797')
/*在Product表中插入示例数据*/
INSERT INTO [Product] VALUES (1, 12.1, 11.4, 1, 'Meno', 'Meno', '~/Prod_Images/Fish/meno.gif', 100)
INSERT INTO [Product] VALUES (1, 28.5, 25.5, 1, 'Eucalyptus', 'Eucalyptus', '~/Prod_Images/Fish/eucalyptus.gif', 100)
INSERT INTO [Product] VALUES (2, 23.4, 11.4, 1, 'Ant', 'Ant', '~/Prod_Images/Bugs/ant.gif', 100)
INSERT INTO [Product] VALUES (2, 24.7, 22.2, 1, 'Butterfly', 'Butterfly', '~/Prod_Images/Bugs/butterfly.gif', 100)
INSERT INTO [Product] VALUES (3, 38.5, 37.2, 1, 'Cat', 'Cat', '~/Prod_Images/Backyard/cat.gif', 100)
INSERT INTO [Product] VALUES (3, 40.4, 38.7, 1, 'Zebra', 'Zebra', '~/Prod_Images/Backyard/zebra.gif', 100)
INSERT INTO [Product] VALUES (4, 45.5, 44.2, 1, 'Domestic', 'Domestic', '~/Prod_Images/Birds/domestic.gif', 100)
INSERT INTO [Product] VALUES (4, 25.2, 23.5, 1, 'Flowerloving', 'Flowerloving', '~/Prod_Images/Birds/flowerloving.gif', 100)
INSERT INTO [Product] VALUES (5, 47.7, 45.5, 1, 'Panda', 'Panda', '~/Prod_Images/Endangered/panda.gif', 100)
INSERT INTO [Product] VALUES (5, 35.5, 33.5, 1, 'Pointy', 'Pointy', '~/Prod_Images/Endangered/pointy.gif', 100)
GO
/*创建CategoryInsert存储过程*/
CREATE PROCEDURE CategoryInsert
(
@Name varchar(80),
@Descn varchar(255)
)
AS
INSERT INTO Category(Name,Descn) VALUES (@Name,@Descn);
RETURN
GO
修改具体步骤如下:
1.新建MyPetShop.sql文件
新建完MyPetShop.sql文件后,文件就直接在App_Data文件夹里了
新建查询之后,复制部分代码然后运行结果
添加LINQ to SQL文件
如果在已安装里面没有找到LINQ to SQL文件,可以从联机里面查找,然后安装
以上就是成功将sql文件添加到VS里的步骤
下面是还可能会出现的错误:
VS 解决LinqToSql安装无法找到路径问题
上面的意思是本该在D:\VS1\Common7\IDE\ItemTemplates\Web\CSharp\2052这个文件下面出现的LinqToSqlObjects文件没有出现
解决方案:
从D:\VS1或者D:\VS1\Common7或者D:\VS1\Common7\IDE这些文件目录下查找LinqToSqlObjects文件,查找到之后复制该文件,然后把该文件再粘贴到D:\VS1\Common7\IDE\ItemTemplates\Web\CSharp\2052目录下的文件里即可.