在我的项目中,我使用Entity Framework6 Code First来连接数据库。我的解决方案包含两个项目- DAL和Resources。DAL充当数据访问层,而resources则是一个库,其中包含图像或字符串等资源。在这个项目中,我放了4个SQL脚本-- CREATE_VIEWS.SQL,DROP_VIEWS.SQL,CREATE_PROCS.SQL和DROP_PROCS.SQL。
在我的第一次迁移中,我想在Up()中执行CREATE_X.SQL脚本,在Down()中执行DROP_X.SQL脚本。下面是我的CREATE_VIEWS.SQL脚本的一部分:
----------------------------------------------------
-- Copyright © 2017 Jan Bońkowski --
----------------------------------------------------
GO
CREATE VIEW [dbo].[vwSomeView]
AS
SELECT
[dbo].[Activities].[ActivityId],
...
FROM [dbo].[Activities]
INNER JOIN ...
GO
CREATE VIEW [dbo].[vwSomeView2] AS
SELECT
[dbo].[Activities].[ActivityId],
...
FROM [dbo].[Activities]
INNER JOIN [dbo].[Teachers] ON ...
INNER JOIN [dbo].[ActivityPrototypes] ... ;
...
GO和我的CREATE_PROCS.SQL脚本
----------------------------------------------------
-- Copyright © 2017 Jan Bońkowski --
----------------------------------------------------
GO
CREATE PROCEDURE [dbo].[spSomeProc1]
@StudentId INT,
@Result BIT OUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @Count INT = 0
SELECT
@Count = COUNT(*)
FROM [dbo].[AspNetUsers]
WHERE [dbo].[AspNetUsers].[Id] = @StudentId
IF (@Count > 0)
SET @Result = 1
ELSE
SET @Result = 0
END
GO
CREATE PROCEDURE [dbo].[spSomeProc2]
@TeacherId INT,
@Result BIT OUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @Count INT = 0
SELECT
@Count = COUNT(*)
FROM ...
IF (@Count > 0)
SET @Result = 1
ELSE
SET @Result = 0
END
...
GO两个脚本的总体原理图如下:
GO
CREATE VIEW/PROC
GO
CREATE VIEW/PROC等
这些脚本作为文件资源嵌入到资源项目中,并将Build Action设置为Content。在我的迁移中,我尝试将它们命名为:
Sql(EnrollmentSystem.Resources.Properties.Resources.CREATE_VIEWS);
Sql(EnrollmentSystem.Resources.Properties.Resources.CREATE_PROC);在Up()方法的末尾,但在update-database之后收到错误
Incorrect syntax near the keyword 'VIEW'
Incorrect syntax near GO
'CREATE VIEW' must be the first statement in a query batch
Incorrect syntax near GO
'CREATE VIEW' must be the first statement in a query batch
Incorrect syntax near GO
'CREATE VIEW' must be the first statement in a query batch
Incorrect syntax near GO
'CREATE VIEW' must be the first statement in a query batch
Incorrect syntax near GO
'CREATE VIEW' must be the first statement in a query batch
Incorrect syntax near GO
'CREATE VIEW' must be the first statement in a query batch
Incorrect syntax near GO如果有人能帮我解决这个问题,我将不胜感激。提前感谢您的宝贵时间:)
发布于 2017-03-06 00:22:46
在GO之后添加一个新的空行:
GO
CREATE VIEW [dbo].[vwSomeView]
AS https://stackoverflow.com/questions/42600175
复制相似问题