我对SQL查询感到困惑,老实说,这是我甚至不确定如何谷歌的东西之一.因此StackOverflow.
我认为这是一个简单的查询.
SELECT Id
FROM Customer
WHERE Id IN (SELECT Id from @CustomersWithCancelledOrders)
Run Code Online (Sandbox Code Playgroud)
这是我发现奇怪的地方.@CustomersWithCancelledOrders表变量中没有名为Id的列.但没有错误.
这导致所有客户的ID.每一个.这显然违背了首先进行子查询的要点.
这就像它使用外表(客户)中的Id列,但我不明白为什么会这样做.有没有理由你想这样做?我错过了一些非常明显的东西吗?
SQLFiddle的怪异.它不是最好的SQL小提琴,因为我找不到在该网站上返回多个结果集的方法,但它演示了我如何处理该问题.
我想我正在寻找的是上面"功能"的名称,某些信息是关于它为什么做它做什么以及错误查询实际意味着什么.
我已经更新了上面的问题以使用稍微好一些的例子.它仍然是人为的,但它更接近我实际遇到问题时写的剧本.
在对相关子查询进行一些读取之后,看起来我的拼写错误(使用子查询中的错误Id列)会更改子查询的行为.
而不是一次评估子查询的结果,然后将这些结果作为一个集合(这就是我的意图),它会为外部查询中的每一行计算子查询.
这意味着子查询为每行评估一组不同的结果,并保证该组结果中包含该行的客户ID.子查询返回一个由重复X次的行的Id组成的集合,其中X是从中选择的表变量中的行数.
...
很难写下我对这个问题的理解的简明描述.抱歉.我觉得我现在很好.
我已经达到了这样的程度,我想编写一个自动化测试来验证WPF视图的内容,该视图与特定状态下的视图模型绑定.
在概念上,它相当简单.创建视图模型,设置其状态,创建适当的视图,将视图添加到窗口,设置视图的数据上下文,显示窗口,截取屏幕截图,与先前截取的屏幕截图进行比较.此类测试对于检测意外更改以及验证是否可以无误地创建所有View都非常有用.
但是,创建我的View实例证明是有问题的.它需要一组未包含在XAML定义中的资源.这些资源包含在实际应用程序中的应用程序级资源字典中,因此在实际应用程序中创建View时,这些资源已经可用.
当我在我的测试中创建此View的实例时,它会抛出一个关于无法找到各种资源的XamlParseException(可以理解).
我不想简单地将适当的资源字典添加到View本身的XAML定义中,因为这会增加创建其中一个View对象所需的工作量(计算机工作量),以及增加每个所需的内存量.实例.我的理解是,这是ResourceDictionary没有以这种方式共享的结果.
我试过了:
从本质上讲,我需要知道是否有办法设计一种情况,我可以为自动测试中使用的WPF组件的独立实例配置一组应用程序资源.
您可以通过创建以下结构来重现该问题,除了一个项目中的View_Test.cs文件之外的所有文件,以及生活在测试项目中的View_Test.cs文件.运行应用程序,它的工作原理.运行测试但失败.
App.xaml中
<Application
x:Class="Blah.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)
Styles.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="SpecialBrush" Color="Black" />
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml
<Window
x:Class="Blah.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Blah="clr-namespace:Blah"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Blah:View/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
View.xaml
<UserControl
x:Class="AutomatedTestUserControlApplicationResources.View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid Background="{StaticResource SpecialBrush}">
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
View_Test.cs
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Blah;
using System.Windows;
namespace Blah.Test
{
[TestClass]
public class …Run Code Online (Sandbox Code Playgroud) 每当我尝试在Visual Studio 2013中配置测试时,通过右键单击测试资源管理器中的测试,然后选择"配置文件测试"选项,测试成功执行(并通过),但性能分析失败并显示以下消息.
File contains no data buffers
File contains no data buffers
Analysis failed
Run Code Online (Sandbox Code Playgroud)
我使用的是Windows 7 64.
我可以成功地分析应用程序本身(仪器和采样),没有任何问题.
我最近发现了Blend for WPF组件非常有用的设计时属性,其中(除其他外)允许您仅在设计时设置DataContext.真棒!
结合DesignInstance属性,您可以设置在设计时自动创建和绑定的类型,允许您使用Visual Studio Designer以及WPF组件在运行时实际看起来的内容.它非常好,我希望它没有花太多时间去发现.
显然,因为我在这里而不是在程序员天堂里生活,所以在使用这些设计时属性时我遇到了一个问题.
我在一个我的ViewModels周围创建了一个设计时包装器,它有一个无参数构造函数(所以它可以由设计者创建).在它的构造函数中,它使用NSubstitute来模拟注入它继承的ViewModel的所有依赖项.
在设计器中使用此设计时间类会导致错误,如下所示:
Unable to cast object of type 'Castle.Proxies.XProxy' to type 'X'.
(将X替换为我注入的依赖项之一).
您可以使用以下最小代码集来重现该问题.
在VS2013中创建一个针对.NET Framework 4.5.1的WPF应用程序(在以前的版本中也可能发生,我不知道),其中包含以下文件.
View.xaml
<Page
x:Class="DesignTimeNSubstituteIssue.Views.View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:DesignTimeNSubstituteIssue_Views_DesignTime="clr-namespace:DesignTimeNSubstituteIssue.Views.DesignTime"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=DesignTimeNSubstituteIssue_Views_DesignTime:DesignTimeViewModel, IsDesignTimeCreatable=True}">
<Grid>
<TextBlock Text="{Binding Message, FallbackValue=Design_Time_Message_Failed_Using_Fallback}"/>
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
ViewModel.cs
using DesignTimeNSubstituteIssue.Services;
namespace DesignTimeNSubstituteIssue.ViewModels
{
public class ViewModel
{
public ViewModel(XDependency dependency)
{
_Dependency = dependency;
}
private readonly XDependency _Dependency;
public string Message { get; protected set; }
}
}
Run Code Online (Sandbox Code Playgroud)
DesignTimeViewModel.cs
using DesignTimeNSubstituteIssue.Services;
using DesignTimeNSubstituteIssue.ViewModels; …Run Code Online (Sandbox Code Playgroud)