Sql CE与多个语句不一致

Bre*_*ias 3 sql-server-ce dapper

您可以使用SQL CE执行多个语句,这一直是事实.事实上,我正在使用SQL Server Compact Toolbox来做到这一点.但是,当我采用相同的多语句命令并从Dapper执行它们时......

public const string SampleDml = @"
   INSERT INTO [Plugin](Name, TypeName) VALUES ('Blog','Shroom.Blog');
   GO
   INSERT INTO [ContentDef](PluginID, Name, Placement, IsStatic) VALUES(@@IDENTITY,'MyBlog','Layout:Left',1);
   GO
";
Run Code Online (Sandbox Code Playgroud)

然后我不断收到此错误:

解析查询时出错.[令牌行号= 3,令牌行偏移= 1,令牌错误= GO]

我正在使用的SQL CE库的版本是版本4.0.0.0(运行时版本v2.0.50727).我正在使用Dapper 1.12.0.0(运行时版本v4.0.30319)和Dapper Extensions 1.3.2.0(运行时版本v4.0.30319).

SQL CE库看起来像是错误的运行时,但是Web平台安装程序说我有最新的(所以这真的是最新的?).思考?

Eri*_*kEJ 7

实际上,您只能使用SQL Server Compact执行每个批处理的单个语句,我所做的(我是SQL Server Compact Toolbox作者)是按GO和换行符分割字符串.

我有这样的代码:

        using (StringReader reader = new StringReader(script))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                line = line.Trim();
                if (line.Equals("GO", StringComparison.OrdinalIgnoreCase))
                {
                    RunCommand(sb.ToString(), dataset);
                    sb.Remove(0, sb.Length);
                }
                else
                {
                    sb.Append(line);
                    sb.Append(Environment.NewLine);
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)