EF使用ExecuteStoreCommand创建过程(运行批量脚本)

时间:2013-02-12 22:31:50

标签: sql-server entity-framework

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- USP_TEST_SELECT
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'usp_test_select' AND type = 'P')
    DROP PROCEDURE usp_test_select
GO
CREATE PROCEDURE usp_test_select
    @id         int 
AS
BEGIN
    SET NOCOUNT ON;
    SELECT * FROM MY_TABLE mt WHERE mt.id = @id
END
GO
-- **********************************************

我从文本文件中读取此脚本,并希望使用EF .ExecuteStoreCommand(或EF中的任何其他执行方法)运行它。

抛出异常:

  

System.Data.SqlClient.SqlException(0x80131904):附近的语法不正确   '走出去'。
  'CREATE / ALTER PROCEDURE'必须是查询批处理中的第一个语句。

我运行的脚本(文本文件)由SQL Server Management Studio生成,如果在那里执行则成功运行。

1 个答案:

答案 0 :(得分:1)

GO不是有效的T-SQL statement,它仅由SQL Management工作室使用。更改您的代码以使用动态创建sql 例如:

If exists (condition) then exec('create procedre..')