C# 什么';.NET网页中SQL Server CE数据库事务的语法是什么?

C# 什么';.NET网页中SQL Server CE数据库事务的语法是什么?,c#,sql,sql-server-ce,webmatrix,asp.net-webpages,C#,Sql,Sql Server Ce,Webmatrix,Asp.net Webpages,我一直在研究在我当前编程的环境中使用数据库事务(使用WebMatrix的C#.Net网页,使用SQL Server CE),并且已经阅读了很多关于该主题的内容 起初,我研究这个问题是因为我觉得这对我的项目来说是100%必要的,不过,现在我意识到默认的“最后一个在wins中”并发策略对于我稍微简单的CRUD系统来说可以很好地工作 现在,我没有足够的知识来真正地说我,100%,需要这个,但是我想,如果可能的话,将我必须多次访问数据库的所有语句聚合到一个语句中,以尽量减少数据库被锁定的次数(再说一遍,

我一直在研究在我当前编程的环境中使用数据库事务(使用WebMatrix的C#.Net网页,使用SQL Server CE),并且已经阅读了很多关于该主题的内容

起初,我研究这个问题是因为我觉得这对我的项目来说是100%必要的,不过,现在我意识到默认的“最后一个在wins中”并发策略对于我稍微简单的CRUD系统来说可以很好地工作

现在,我没有足够的知识来真正地说我,100%,需要这个,但是我想,如果可能的话,将我必须多次访问数据库的所有语句聚合到一个语句中,以尽量减少数据库被锁定的次数(再说一遍,我不确定这是否值得担心,但我只是觉得一条语句会更干净、更高效,甚至更不容易出错)

在我的服务器端代码中,我有一些逻辑分支,根据ID号是否可以重用,它们需要为我需要添加的每一行向数据库执行
INSERT-INTO
UPDATE
语句de>将语句插入到一条语句中

最后,在为我的环境检查事务语法时,我遇到了许多描述事务如何工作的页面,但没有提供任何语法示例。我确实发现了这个页面…:

…这实际上是针对我的环境和服务器端代码的,但是,当我键入时,使用的语法不会显示为Intellisence,这一直是语法错误的信号。不过,在本页中,我可以很容易地看到我应该如何在逻辑上设置它(使用“try”、“catch”,甚至“finally”),这对我来说非常有意义。我的问题是,我找不到关于如何实际编译事务的给定环境的任何语法


是否有人可以提供一个示例,说明使用SQL Server CE,environment在我的带有WebMatrix的C#.Net网页中使用多个
INSERT
UPDATE
语句编译数据库事务所需的语法?

您是否在引用中添加了System.Transactions dll?当然,如果您e使用TransactionScope,但如果使用IDbTransaction,则只需添加
使用System.Data;

是否将System.Transactions dll添加到引用中?当然,如果您使用的是TransactionScope,那么您应该只添加
使用System.Data;

事务不提供减少对数据库执行的命令数量的机制。您可以通过批处理语句来实现这一点-使用分号作为语句分隔符:

"INSERT INTO table1 VALUES (x,y,z); INSERT INTO table2 VALUES(1,2,3)"
然后,您可以一次性执行该批次:

command.ExecuteNonQuery(sql);
这将导致对数据库的一次调用,从而实现您的目标

但是:

SQL Compact不支持批处理语句。因此不能使用它们。必须依次执行每条语句


在执行插入时,您真的不需要担心数据库锁定。这需要几分之一纳秒的时间,而且数据库本身将处理或排队请求,以便用户不受影响。

事务不提供减少针对数据库执行的命令数目的机制e、 您可以通过批处理语句来实现这一点—使用分号作为语句分隔符:

"INSERT INTO table1 VALUES (x,y,z); INSERT INTO table2 VALUES(1,2,3)"
然后,您可以一次性执行该批次:

command.ExecuteNonQuery(sql);
这将导致对数据库的一次调用,从而实现您的目标

但是:

SQL Compact不支持批处理语句。因此不能使用它们。必须依次执行每条语句


在执行插入时,您真的不需要担心数据库锁定。这需要几分之一纳秒的时间,而且数据库本身将处理或排队请求,以便用户不受影响。

对不起,我不知道TransactionScope和IDb Transaction之间的区别。我对整个trans都是新手动作。我认为微软有意将所有dll引用设置在
cshtml
文件范围内。我以前不得不在
.cs
文件中使用
语句添加
,但从来没有为
.cshtml
文件添加过。如果我只是进一步混淆了你,我很抱歉,但我不知道trans和cshtml之间的区别sactionScope和IDb事务。我对整个事务都不熟悉。我认为微软有意将所有dll引用都设置在
cshtml
文件范围内。我以前不得不在
.cs
文件中使用
语句添加
,但从来没有为
.cshtml
文件添加过
。抱歉,我只是把您弄糊涂了REST。如果需要保证另一个查询可以看到0个新行或所有新行,则需要关注数据库锁定。这在删除和插入新数据时非常重要。您需要一个事务来防止另一个查询在多语句操作的中间捕获您,并读取错误/ MISLADADI。NG数据。如果需要保证另一个查询可以看到0个新行或所有新行,则需要关注数据库锁定。这在删除和插入新数据时非常重要。您需要一个事务来防止另一个查询在多语句操作的中间捕获您,并读取错误/错误。数据挖掘。