插入后右行返回没有结果

时间:2012-11-08 10:58:57

标签: c# .net sql-server sql-server-2008 ado.net

我正在运行单元测试,当我尝试在数据库中插入数据并在之后立即获取数据时,我没有得到任何结果(我尝试使用DataAdapterDataReader)。

然而,当我在插入和选择之间进行3秒睡眠(即使1秒钟无效......)我得到了结果。

在SQL Server Profiler中,我可以看到执行,插入完成并在选择开始前大约10毫秒完成。

我无法找到它的来源

代码如下所示: 插入方法

SqlCommand command = new SqlCommand(sqlTemplate);
command.Parameters.Add(Sql4oConstants.Sql4oIdParameterName, SqlDbType.UniqueIdentifier).Value = id;
command.Parameters.Add(Sql4oConstants.Sql4oTimestampParamterName, SqlDbType.DateTime).Value = DateTime.Now;

command.CommandTimeout = dataSourceDescription.CommandTimeout;
DatabaseManager.ExecuteNonQuery(dataSourceDescription.ConnectionString, command);

获取方法

public static void Fill(string connectionString, DataTable table, SqlCommand command)
    {
        try
        {
            LogStorageWriter.WriteLogEntry(log, EStorageLevelLog.Debug, string.Format("Execute query: {0}", command.CommandText));

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                command.Connection = conn;
                using (SqlDataAdapter adapter = new SqlDataAdapter(command))
                {
                    adapter.Fill(table);
                }
            }
        }
        catch (InvalidOperationException e)
        {
            LogStorageWriter.WriteLogEntry(log, EStorageLevelLog.Error, string.Format("Exception : {0}", e.ToString()));
        }
    }

1 个答案:

答案 0 :(得分:0)

我解决了。

事实上,这是因为我的请求使用了CONTAINS。然后我发现使用CONTAINS调用SQL Server Indexer来获取数据。但引擎不会立即索引数据。 这就是为什么我不得不等待2到3秒才能恢复数据。