小编Dea*_*one的帖子

Azure CosmosDB - 复杂结构的部分文档更新(补丁)

我正在尝试使用部分文档更新(补丁 API)来更新文档中的子对象,但遇到了麻烦。我发现这个堆栈溢出问题与我的问题相同。但是,接受的答案通过按索引引用数组中的对象来解决问题。我不相信我有能力做到这一点。因此,要使用与其他问题相同的示例文档......

{
    "id": "SalesOrder2",
    "ponumber": "PO15428132599",
    "OrderDate": "2005-07-01T00:00:00",
    "DueDate": "2005-07-13T00:00:00",
    "ShippedDate": "2005-07-08T00:00:00",
    "AccountNumber": "Account2",
    "SubTotal": 6107.082,
    "TaxAmt": 586.1203,
    "Freight": 183.1626,
    "TotalDue": 4893.3929,
    "DiscountAmt": 1982.872,
    "Items": [
        {
            "Id": 1,
            "OrderQty": 3,
            "ProductCode": "A-123",
            "ProductName": "Product 1",
            "CurrencySymbol": "$",
            "CurrencyCode": "USD",
            "UnitPrice": 17.1,
            "LineTotal": 5.7
        },
        {
            "Id": 2,
            "OrderQty": 2,
            "ProductCode": "A-456",
            "ProductName": "Product 2",
            "CurrencySymbol": "$",
            "CurrencyCode": "USD",
            "UnitPrice": 10,
            "LineTotal": 20
        }
    ],    
    "_rid": "BsMkAMc43s4CAAAAAAAAAA==",
    "_self": "dbs/BsMkAA==/colls/BsMkAMc43s4=/docs/BsMkAMc43s4CAAAAAAAAAA==/",
    "_etag": "\"00000000-0000-0000-e136-0dbec04601d7\"",
    "_attachments": "attachments/",
    "_ts": 1637760030
}
Run Code Online (Sandbox Code Playgroud)

我无法保证 …

azure-cosmosdb

6
推荐指数
1
解决办法
2449
查看次数

WPF淡出动画 - 无法再改变不透明度

我有一个带有标签控件的WPF窗口,用于向用户发送消息.几秒钟后,我希望消息消失.我创建了一个DispatcherTimer和一个故事板来做到这一点.(计时器延迟5秒,然后点击事件触发,消息消失.)它成功消失,但下一条消息仍然将其不透明度设置为0.(因此用户无法看到它.)显然,我试过了将不透明度设置回1,但失败并没有例外.(也就是说,我可以毫无问题地跨过那行代码,但是在执行它之后不透明度仍为0.)谁能告诉我我做错了什么?以下是来自测试项目的一些代码,只有标签控件,设置标签内容和淡入淡出动画的按钮,以及尝试重置不透明度的按钮.

XAML:

<Window x:Class="WpfTestApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="100" Width="525">
    <Grid>
        <StackPanel x:Name="stkHeaderBar" Grid.Row="0" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" Orientation="Horizontal" FlowDirection="RightToLeft">
            <Label x:Name="lblTest" Content="lblTest"/>
            <Button x:Name="btnChangeLabel" Content="ChangeLabel" Click="btnChangeLabel_Click"/>
            <Button x:Name="btnResetOpacity" Content="Reset Opacity" Click="btnResetOpacity_Click"/>
        </StackPanel>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

C#:

private void btnChangeLabel_Click(object sender, RoutedEventArgs e)
{
    lblTest.Content = "Testing1...Testing2...Testing3";
    lblTest.Opacity = 1;

    // Create a storyboard to contain the animations.
    Storyboard storyboard = new Storyboard();
    TimeSpan duration = new TimeSpan(0, 0, 2);

    // Create a DoubleAnimation to fade the not selected option control …
Run Code Online (Sandbox Code Playgroud)

c# wpf

5
推荐指数
1
解决办法
1万
查看次数

VS2013 - SQL Server单元测试 - 查询超时

我正在Visual Studio 2013中创建我的第一个SQL Server单元测试.我有一个在SQL Server Management Studio窗口中成功运行的脚本.我有一个重置数据库状态的脚本,该脚本也成功运行.(我将其设置为我的PreTest脚本.)我的单元测试大约需要2分钟才能运行.(它在幕后生成了大量数据.)但SQL Server单元测试似乎配置为在30秒后超时.我一直试图找出如何更改超时设置,但我似乎无法找到它.(请注意,我不是指连接超时,而是查询执行超时.)我想以超时设置3分钟运行此测试.

提前致谢.

sql-server unit-testing visual-studio visual-studio-2013

3
推荐指数
1
解决办法
663
查看次数

临时表需要唯一索引名称

我正在更新一个遗留存储过程(它调用其他几个子存储过程。)在一个事务中,它处理大约十几个表中的数据并在这个过程中执行大量计算,有时会触发锁升级到一个表锁。在某些情况下,此过程可能需要 20 分钟或更长时间才能完成。显然,锁定那么长时间的表是一个很大的禁忌。所以我正在制定一个 2 阶段计划,以减少阶段 1 中此 sproc 造成的阻塞,并完全重写它以提高效率,而不是在阶段 2 中花费过多的时间。

为了减少阻塞,只要有对数据库表的操作,我计划将该操作移动到临时表中。通过在临时表中完成所有工作,然后在过程的最后用最终结果更新真实表,我应该能够显着减少阻塞其他用户所花费的时间。(这是第一阶段的“快速修复”。)

这是我的问题:当我将它们用于各种计算时,其中一些临时表中可能有 100,000 行或更多行。因此,我想在临时表上生成索引以保持性能。由于这些是在存储过程中创建的临时表,因此如果多个用户同时执行 sproc,它们需要具有唯一的名称以避免错误。我知道我可以使用 CREATE TABLE 语句手动声明临时表,如果我这样做,我可以指定一个没有名称的索引,并让 SQL Server 为我创建名称。我希望能够做的是使用 SELECT * INTO 生成临时表并找到另一种方法让 SQL Server 自动生成索引名称。我肯定你会问“为什么?” 我的公司对我的系统进行了几项更改 与我一起工作。如果我可以设法使用 SELECT INTO 方法,那么,如果添加列或调整列大小或其他任何内容,那么开发人员就不会遇到问题,需要知道他们必须返回到这些存储过程并更改它们的要匹配的临时表定义。使用 SELECT INTO 将自动保持临时表与“真实”表的布局相匹配。

那么,有没有人知道一种让 SQL Server 自动生成临时表上索引名称的方法(除了作为 CREATE TABLE 语法的一部分这样做)?

谢谢!

sql-server

2
推荐指数
1
解决办法
1730
查看次数

Parallel.ForEach 和 DataTable - DataTable.NewRow() 不是线程安全的“读取”操作吗?

我正在转换现有应用程序以利用多个处理器。我有一些嵌套循环,并且我已将最内层循环转换为 Parallel.Foreach 循环。在原始应用程序中,在最内层循环内,代码将调用DataTable.NewRow()实例化适当布局的新 DataRow、填充列并将填充的 DataRow 添加到带有 的 DataTable 中DataTable.Add()。但由于 DataTable 仅对于读取操作是线程安全的,因此我已转换处理以将填充的 DataRow 对象添加到对象中ConcurrentBag<DataRow>。然后,一旦 Parallel.Foreach 循环完成,我将迭代 ConcurrentBag 并将 DataRow 对象添加到 DataTable 中。它看起来像这样......

DataTable MyDataTable = new DataTable()
// Add columns to the data table

For(int OuterLoop = 1; OuterLoop < MaxValue; OuterLoop++)
{
    //Do Stuff...

    ConcurrentBag<DataRow> CB = new ConcurrentBag<DataRow>();

    Parallel.Foreach(MyCollectionToEnumerate, x => 
    {
        //Do Stuff

        DataRow dr = MyDataTable.NewRow();
        // Populate dr...
        CB.Add(dr);
    {);

    ForEach(DataRow d in CB)
        MyDataTable.Add(d);
}
Run Code Online (Sandbox Code Playgroud)

因此,当运行时,我看到“索引超出了数组的范围”。调用时出现异常MyDataTable.NewRow()。但是 NewRow() …

c# parallel-processing datatable parallel.foreach

2
推荐指数
1
解决办法
1597
查看次数

自动提交打开时显式提交是否正常?

我一直在寻找,但是找不到这个.我正在使用Oracle并且有一个类似于的For循环:

BEGIN
  FOR YEARIDs IN (SELECT DISTINCT YEARID From MyTable)
  LOOP
    UPDATE (
              SELECT    ......
            )
    SET     MyFlag = 1;
    COMMIT;  -- Added
  END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

AutoCommit已打开,但似乎在整个FOR循环完成之前不会发生提交.因此,我在上面的代码中添加了Commit语句.这是否会导致任何意外结果,或者这是否违反了任何最佳做法?(即,当打开AutoCommit时,我不应该显式调用提交吗?)

谢谢,斯科特

编辑:糟糕...我使用Oracle 11g和Oracle SQL Developer作为客户端.

编辑:感谢您的回复,到目前为止.在运行查询的时间点,正在生成和调整数据.没有其他连接应该尝试访问数据.至于为什么我经常提交,在开发过程中,我针对数据的子集运行查询,并且查询运行得很好.该表保存了大约1400万条记录,我正在测试大约10万条记录.该查询相当复杂,并且针对该子集在大约5分钟内运行.当我针对整个表运行它时,查询运行超过14小时并且无法更新任何记录.我的理论是,保留那么多撤消信息可能会消耗开发服务器上的所有可用资源.如果我经常提交,则可以释放和重用该撤消信息.是的,它很慢.但是如果查询实际上已经完成,即使它需要整晚,那么它也可以移动到测试服务器.(并且可以在以后完成性能调整.)这个问题的截止日期早已过去.(在错过最后期限之后,我被带到了帮助中.而且我的专业领域不在于Oracle.)

sql oracle

1
推荐指数
1
解决办法
175
查看次数