长期以来,您确实可以使用 SQL CE 执行多个语句 https://stackoverflow.com/questions/6970502/can-i-execute-multiple-statements-in-sql-server-compact-4。事实上我正在使用SQL Server 紧凑工具箱 http://sqlcetoolbox.codeplex.com/正是这样做。但是当我采用相同的多语句命令并从 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
";
然后我不断收到此错误:
解析查询时出错。 [ 令牌行号 =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 平台安装程序说我有最新的(所以这真的是最新的吗?)。想法?
实际上,您只能使用 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);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)