小编lad*_*dge的帖子

INNER JOIN条件中的'OR'是个坏主意吗?

在尝试提高极慢查询的速度时(在两个表上只有几万分钟,在SQL Server 2008上只有几万行,如果重要的话),我将问题缩小到OR我的内连接中,如:

SELECT mt.ID, mt.ParentID, ot.MasterID
  FROM dbo.MainTable AS mt
  INNER JOIN dbo.OtherTable AS ot ON ot.ParentID = mt.ID
                                  OR ot.ID = mt.ParentID
Run Code Online (Sandbox Code Playgroud)

我把它更改为(我希望是)一对等效的左连接,如下所示:

SELECT mt.ID, mt.ParentID,
   CASE WHEN ot1.MasterID IS NOT NULL THEN
      ot1.MasterID ELSE
      ot2.MasterID END AS MasterID
  FROM dbo.MainTable AS mt
  LEFT JOIN dbo.OtherTable AS ot1 ON ot1.ParentID = mt.ID
  LEFT JOIN dbo.OtherTable AS ot2 ON ot2.ID = mt.ParentID
  WHERE ot1.MasterID IS NOT NULL OR ot2.MasterID IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

..现在查询运行大约一秒钟!

OR加入条件通常是个坏主意吗?或者我在桌子的布局中不知何故不幸?

sql t-sql sql-server inner-join sql-server-2008

89
推荐指数
2
解决办法
10万
查看次数

为什么在SSIS插入期间我的触发器不会触发?

我有一个带有OLE DB Destination组件的SSIS数据流任务,它将记录插入带触发器的表中.当我INSERT对该表执行一个普通语句时,触发器会触发.当我通过SSIS任务插入记录时,触发器不会触发.

如何在SSIS中触发触发器?

sql triggers ssis bulkinsert

24
推荐指数
2
解决办法
2万
查看次数

使用EF4的POCO模板时"找不到元数据信息"?

我刚安装了EF4的POCO模板.我的模型中有一个实体,AnnouncementText,并且T4文件似乎正确生成.当我访问自动生成的属性时,尝试访问此新实体会引发以下错误MyObjectContext.AnnouncementTexts:

InvalidOperationException:无法找到EntityType'MyNamespace.AnnouncementText'的映射和元数​​据信息.

AnnouncementTextPOCO 上的属性似乎与数据库中的列匹配,并且我没有更改任何自动生成的代码.

堆栈跟踪是:

   at System.Data.Objects.ObjectContext.GetTypeUsage(Type entityCLRType)
   at System.Data.Objects.ObjectContext.GetEntitySetForNameAndType(String entitySetName, Type entityCLRType, String exceptionParameterName)
   at System.Data.Objects.ObjectContext.CreateObjectSet[TEntity](String entitySetName)
   at MyNamespace.MyObjectContext.get_AnnouncementTexts() in C:\<snip>\MyObjectContext.Context.cs:line 65
   at MyNamespace.Class1.Main() in C:\<snip>\Class1.cs:line 14
Run Code Online (Sandbox Code Playgroud)

如果我.tt从解决方案中删除文件并在模型上启用代码生成,我可以毫无问题地访问该属性.

这是我的代码,如果可能有帮助:

using (var context = new MyObjectContext())
   foreach (var at in context.AnnouncementTexts)
      Console.WriteLine(at.Title);
Run Code Online (Sandbox Code Playgroud)

关于可能出错的任何想法?

entity-framework poco efpocoadapter

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

我可以使用protobuf-net序列化任意类型吗?

我正在尝试用protobuf-net序列化一些对象,但不幸的是他们自由使用DateTimeOffset了protobuf-net尚未支持的对象.这导致了很多:

没有为类型定义的序列化程序:System.DateTimeOffset

我可以为未知类型定义自己的序列化例程吗?(之前曾问过同样的问题,但他的问题已得到解决.)

如果重要的话,我在.NET 4下使用最新的protobuf-net beta,v2.0.0.431.我也在使用运行时定义,因此我无法以声明方式指定如何处理某些属性.

protobuf-net

22
推荐指数
2
解决办法
5595
查看次数

构建Web Deploy包时,"redirection.config"的这个模糊错误是什么?

我正在尝试通过msbuild在新机器上构建一个Web Deploy包,但它无法正常工作.它在其他机器上构建良好,但在这里我得到以下模糊错误:

...\Microsoft.Web.Publishing.targets(2767,5): error : Filename: redirection.config
...\Microsoft.Web.Publishing.targets(2767,5): error : Error: Cannot read configuration file
...\Microsoft.Web.Publishing.targets(2767,5): error : 
...\Microsoft.Web.Publishing.targets(2767,5): error : Unknown error (0x80005000)
Run Code Online (Sandbox Code Playgroud)

我不确定'redirection.config'是什么,并且.targets文件的行引用根本没有帮助.

我怎样才能解决这个问题?

iis msdeploy webdeploy

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

Web Deploy的setAcl提供程序可以在子目录中使用吗?

我正在尝试在MS Deploy包中创建一个可写入应用程序池用户的子目录.感谢Kevin Leetham 关于setAcl提供程序有用帖子,我能够将我需要的大部分内容放到我的项目文件中:

<MsDeploySourceManifest Include="setAcl"
                        Condition="$(IncludeSetAclProviderOnDestination)">
  <Path>$(_MSDeployDirPath_FullPath)\doc\public</Path>
  <setAclAccess>Read,Write,Modify</setAclAccess>
  <setAclResourceType>Directory</setAclResourceType>
  <AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>
Run Code Online (Sandbox Code Playgroud)

请注意,我已将"\ doc\public"添加到根部署目录.在VS2010构建的结果清单中,我看到以下setAcl元素:

<sitemanifest>
  <contentPath path="C:\Source\...\obj\Debug\Package\PackageTmp" />
  <setAcl path="C:\Source\...\obj\Debug\Package\PackageTmp"
          setAclResourceType="Directory" />
  <setAcl path="C:\Source\...\obj\Debug\Package\PackageTmp"
          setAclUser="anonymousAuthenticationUser"
          setAclResourceType="Directory" />
  <setAcl path="C:\Source\...\obj\Debug\Package\PackageTmp\doc\public"
          setAclResourceType="Directory"
          setAclAccess="Read,Write,Modify" />
</sitemanifest>
Run Code Online (Sandbox Code Playgroud)

最后一行看起来很好:它附加了我想要写的子目录,并且访问修饰符似乎已经转移得足够好了.

但是,当我部署此包时,我收到一个错误:

错误:当'setAcl'提供程序与物理路径一起使用时,必须指定'setAclUser'设置的值.

这是一个令人困惑的错误,因为我并没有尝试在物理路径上设置ACL,而是在Web应用程序的子目录中.查看MS Deploy的输出,很容易看出问题所在:

Info: Adding setAcl (REST Services\1.0.334).
Info: Adding setAcl (REST Services\1.0.334).
Info: Adding setAcl (C:\...\obj\Release\Package\PackageTmp\doc\public).
Run Code Online (Sandbox Code Playgroud)

MS Deploy显然用我的绝对路径"C:...\obj\Release\Package\PackageTmp"替换了Web应用程序名称,但当我将"\ doc\public"附加到该绝对路径时,它不再将其识别为Web应用程序目录.这个确切的问题是由另一个受害者在ASP.NET论坛上描述而没有任何解决方案.

有没有人知道如何通过Web Deploy在Web应用程序的特定子目录上设置ACL,而无需在目标主机上手动识别物理路径和应用程序池用户?

iis-7 visual-studio-2010 msdeploy webdeploy

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

是否有PBKDF2的SQL实现?

有谁知道PBKDF2的SQL实现?

(我宁愿不使用外部库,例如ChillKat的ActiveX组件.)

sql pbkdf2

13
推荐指数
3
解决办法
6198
查看次数

RestSharp可以在不使用多部分内容类型的情况下发送二进制数据吗?

我一直在使用AddParameter在我的HTTP请求中包含XML主体:

request.AddParameter(contentType, body, ParameterType.RequestBody);
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于非字符串体.(RestSharp Http.RequestBody由于某种原因是一个字符串.)我尝试使用AddFile(),但我找不到任何方法来避免将"文件"编码为multipart/form,即使我只提供了一个对象.

我完全不反对解决这个问题的反思,但我希望避免修改源只是为了在HTTP请求中发送任意数据.

编辑:关于我要发送的请求,它们看起来像这样:

PUT ... HTTP/1.1
Accept: application/vnd...
Authorization: Basic ...
Content-Type: application/octet-stream

<arbitrary bytes>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想使用相同的调用来发送不同的内容类型:

PUT ... HTTP/1.1
Accept: application/vnd...
Authorization: Basic ...
Content-Type: application/vnd...

<other arbitrary bytes>
Run Code Online (Sandbox Code Playgroud)

c# restsharp

10
推荐指数
3
解决办法
2万
查看次数

如何以编程方式将元素添加到ConfigurationElementCollection?

我正在尝试对自定义进行单元测试ConfigurationElementCollection,但是我遇到了以编程方式填充集合的问题.当我打电话时BaseAdd(),我得到以下异常:

ConfigurationErrorsException:元素"add"已被锁定在更高级别的配置中.

但是,此问题仅在运行多个测试时出现.考虑这两个测试:

private Fixture Fixtures = new Fixture();  // AutoFixtures

[Test]
public void test1()
{
    var tc = Fixtures.CreateAnonymous<TenantCollection>();
    var t = Fixtures.CreateAnonymous<Tenant>();
    tc.Add(t);
}

[Test]
public void test2()
{
    var tc = Fixtures.CreateAnonymous<TenantCollection>();
    var t = Fixtures.CreateAnonymous<Tenant>();
    tc.Add(t);
}
Run Code Online (Sandbox Code Playgroud)

单独执行时,每个单独的测试通过.一起运行时,抛出锁定异常.

这里发生了什么?如何解锁集合或解决锁定问题?

.net configuration unit-testing app-config

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

MS Speech Platform 11识别器是否支持ARPA编译的语法?

如何在MS Speech中使用ARPA文件?Microsoft Speech Platform 11识别器的文档意味着可以从ARPA文件编译语法.

我能够编译一个ARPA文件 - 例如,Microsoft提供的一个小例子- 使用以下命令行:

CompileGrammar.exe -In stock.arpa -InFormat ARPA
Run Code Online (Sandbox Code Playgroud)

我可以在以下测试中使用生成的CFG文件:

using Microsoft.Speech.Recognition;

// ...

using (var engine = new SpeechRecognitionEngine(new CultureInfo("en-US")))
{
    engine.LoadGrammar(new Grammar("stock.cfg"));
    var result = engine.EmulateRecognize("will stock go up");
    Assert.That(result, Is.Not.Null);
}
Run Code Online (Sandbox Code Playgroud)

此测试通过,但请注意它使用EmulateRecognize().当我切换到使用实际的音频文件时,如下所示:

using (var engine = new SpeechRecognitionEngine(new CultureInfo("en-US"))) 
{
    engine.LoadGrammar(new Grammar("stock.cfg"));
    engine.SetInputToWaveFile("go-up.wav");
    var result = engine.Recognize();
}
Run Code Online (Sandbox Code Playgroud)

结果始终为null并且测试失败.

微软非常清楚地表明它得到了支持,但即便是非常简单的例子也似乎不起作用.我究竟做错了什么?

speech-recognition sapi microsoft-speech-platform

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