首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从资源执行的SQL脚本在Entity Framework 6 Code First迁移中引发错误

从资源执行的SQL脚本在Entity Framework 6 Code First迁移中引发错误
EN

Stack Overflow用户
提问于 2017-03-05 03:11:54
回答 1查看 385关注 0票数 1

在我的项目中,我使用Entity Framework6 Code First来连接数据库。我的解决方案包含两个项目- DAL和Resources。DAL充当数据访问层,而resources则是一个库,其中包含图像或字符串等资源。在这个项目中,我放了4个SQL脚本-- CREATE_VIEWS.SQLDROP_VIEWS.SQLCREATE_PROCS.SQLDROP_PROCS.SQL

在我的第一次迁移中,我想在Up()中执行CREATE_X.SQL脚本,在Down()中执行DROP_X.SQL脚本。下面是我的CREATE_VIEWS.SQL脚本的一部分:

代码语言:javascript
复制
---------------------------------------------------- 
--         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脚本

代码语言:javascript
复制
----------------------------------------------------
--         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

两个脚本的总体原理图如下:

代码语言:javascript
复制
GO
CREATE VIEW/PROC

GO
CREATE VIEW/PROC

这些脚本作为文件资源嵌入到资源项目中,并将Build Action设置为Content。在我的迁移中,我尝试将它们命名为:

代码语言:javascript
复制
Sql(EnrollmentSystem.Resources.Properties.Resources.CREATE_VIEWS);
Sql(EnrollmentSystem.Resources.Properties.Resources.CREATE_PROC);

Up()方法的末尾,但在update-database之后收到错误

代码语言:javascript
复制
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

如果有人能帮我解决这个问题,我将不胜感激。提前感谢您的宝贵时间:)

EN

回答 1

Stack Overflow用户

发布于 2017-03-06 00:22:46

在GO之后添加一个新的空行:

代码语言:javascript
复制
GO

CREATE VIEW [dbo].[vwSomeView] 
AS 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42600175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档