在Visual Studio中使用“查询设计”功能时,我在测试时在SQL数据库或Microsoft Access数据库上运行的任何查询都是持久的。这意味着他们实际上改变了表中的数据。有没有办法在测试它们之前使查询非持久性,直到程序运行?使用C#作为编程语言,如果重要的话,使用.NET作为框架。还需要知道使用MS Access或SQL数据库执行此操作的过程。
答案 0 :(得分:0)
您可以在C#中执行类似于在SQL中使用它们的方式。这是一个例子:
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");
//Execute query here
Query details
//check if test environment
bool testEnvironment = SomeConfigFile.property("testEnvironment");
if (!testEnvironment) {
transaction.Commit();
} else {
transaction.Rollback();
}
以下是C#中交易的文档:https://msdn.microsoft.com/en-us/library/86773566%28v=vs.110%29.aspx
答案 1 :(得分:0)
It should be possible for VS to create you a local copy of the SQL data you're working on while you're testing. This is held in the bin folder. Have a look at this:
https://msdn.microsoft.com/en-us/library/ms246989.aspx
Once you're finished testing you could simply change it to be pointing to the database you want to alter with your application.
答案 2 :(得分:0)
我不知道如何准确地获得您所要求的内容,但我认为有一种方法可以接近您想要的行为:
使用Microsoft SQL Server时,在名称(#tableName)中创建带有前导哈希的表将导致在会话结束时处理该表。
您可以利用此方法获得所需行为的一种方法是将工作表复制到临时表中,然后使用临时表而不是实时表。
为此,请使用以下内容:
SELECT * INTO #tempTable FROM liveTable
这将创建liveTable的完整副本,其中包含所有相同的列和行。完成后,表格将自动删除,不会进行永久性更改。
这对于在大型数据集的同一子集上执行的一系列查询也很有用。将数据子集选择到较小的临时表中可以使后续查询比必须重复从完整数据集中选择要快得多。
请记住,只要您的连接关闭,所有数据都会随之结束。