我们使用ODP.NET在Oracle数据库上执行查询,通常它工作正常.但是,有一个特定的数据库,以及该数据库中的特定视图,我们无法从.NET完成查询.例如:
SELECT some_varchar_field FROM the_view WHERE ROWNUM < 5;
Run Code Online (Sandbox Code Playgroud)
如果我从Oracle SQL开发人员中执行此查询,则会在不到一秒的时间内完成.如果我使用ODP.NET从我们的.NET应用程序执行相同的查询,它会挂起并最终产生"ORA-03135:连接丢失联系"错误.我认为将其限制为几行可以消除它作为FetchSize问题的可能性.
我可以成功执行其他查询,但它们从我们的程序比从SQL Developer慢.再一次,我意识到SQL Developer最初只获取前50行的数据,但我认为ROWNUM条件取决于该等式.
Oracle SQL Developer使用的连接或命令与我们的应用程序使用的连接或命令有什么不同会导致速度差异?
不幸的是,我没有访问服务器(除了对它运行Oracle查询).
谢谢.
更新:我已经尝试与Microsoft的Oracle提供程序进行相同的查询,并且执行速度非常快.不幸的是,该提供商已被弃用,因此这不是一个长期解决方案.
我们最近遇到了问题,因为自Firefox 4发布以来,ScrollPosition数据永远不会被发送给Firefox用户.这是由browsercaps文件仅指定Firefox 3.x的功能引起的.这个问题的一个解决方案是更新每个服务器上的browsercaps文件,以及任何时候发布新版本的Firefox(或Chrome,或其他).好吧,在我们有机会解决这个问题之前,我们已经在Firefox 6上了,它看起来像是一场我们不想继续运行的竞赛.
事实证明,在母版页中设置Page.ClientTarget ="uplevel"(因此,无论如何,无条件地)修复了我们特定的Firefox ScrollPosition问题.作为解决方案对此有什么负面影响?Android浏览器的用户会遇到更糟糕的体验吗?他们现在只是下载不必要的大页面吗?我们有什么理由不这样做吗?
Page.ClientTarget的文档非常可怕:
uplevel,指定与Internet Explorer 6.0等效的浏览器功能.
..而且似乎是错误的,或者至少是误导性的.它似乎是在IE6是最强大的浏览器的时候编写的."uplevel"真的意味着"假设浏览器能够胜任一切"或"像对待IE6一样对待它"吗?
我在VS2008中有一个服务参考(不是Web引用)到我没写的Web服务.参考有效,但我只能使用每种方法的异步版本.
在"配置服务引用"对话框中,选中"生成异步操作"并显示为灰色.首先,我认为除了阻止方法之外,检查此框还会生成异步方法.其次,我以前从未见过它变灰了.
我有编写WCF和ASMX时代Web服务两方面的经验,之前从未见过这个.可能是什么导致了这个?
谢谢.
我想使用Type.GetType(nameOfTheType)创建一个类型,其中nameOfTheType是一些字符串.如果nameOfTheType是"System.String",这很好用.如果nameOfTheType是"string",则抛出异常.包含关键字快捷键的所有类型都会失败.
有没有办法,除了一个大的switch语句,正确地将所有类型的关键字快捷方式映射到他们的实际类型名称(根据此列表:http://msdn.microsoft.com/en-us/library/ya5y69ds %28VS.80%29.aspx)?
编辑:Gabriel已正确指出我链接的MSDN页面不包含可空类型(int?等),但重要的是可以正确映射可空类型.
实现通过HTTP使用WCF进行传输级安全性的Web服务非常简单:为我的WCF服务启用SSL
通过net.tcp实现与WCF一起使用传输级安全性的Web服务非常困难:具有netTcpBinding和证书传输安全性的WCF
...而net.tcp解决方案通常在服务器端和客户端都涉及到类似的东西:
<serviceCertificate
findValue="MyServiceCertificate"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
Run Code Online (Sandbox Code Playgroud)
在HTTP情况下,您甚至不需要在客户端或服务器上提及证书.在NET.TCP案例中,您必须在我阅读的大多数源中在客户端和服务器上存储,定位和指定证书.
做神奇的事情是什么让你不必担心HTTP模式下的证书?而且,为什么在使用net.tcp时你无法使用这种魔法?
我将生成CFUUID对象(如果有更好的方法在iOS上创建GUID,请告诉我),需要使用Core Data持久保存.Core Data中没有GUID数据类型.什么是首选类型?它看起来像CFUUID对象很容易转换为字符串,所以我在想.另一种选择可能是二进制数据.
另一个考虑因素是这些GUID将进出JSON对象(通过NSJSONSerialization使用内置的iOS5 JSON序列化).
我有一个实时数据库,从中删除了一些数据,我需要返回数据.我有一个已经在另一台机器上恢复的该数据库的最新副本.自备份以来,对实时数据库进行了无关的更改,因此我不想通过完全还原来清除实时数据库.
我需要的数据很小 - 只有十几行 - 但是那些十几行每个都有一些来自其他表的行和外键,而那些几行知道有多少行用外键指向它们,所以它会手工复原很复杂.
理想情况下,我能够告诉数据库的备份副本,以选择我需要的十几行,以及它们所依赖的所有内容的传递闭包,以及依赖于它们的所有内容,并导出那些数据,然后我可以导入到实时数据库而不触及任何其他内容.
这里最好的方法是什么?谢谢.
每个人都提到了sp_generate_inserts.使用它时,如何防止标识列搞乱一切?你刚刚开启IDENTITY INSERT吗?
我们升级到VS 2010,但我们还没有升级到.NET 4.0.我们所有的项目仍明确针对3.5.
今天,开发人员检查了如下所示的代码:
delegate T Generator<out T>();
Run Code Online (Sandbox Code Playgroud)
据我所知,"T"和"out T"是C#4.0的功能.根据我们的构建服务器,它没有安装.NET 4.0,我是对的.办理登机手续打破了建筑.但是,为什么它会在他的机器上构建呢?为什么VS只是忽略了项目的目标框架?
其他C#4.0功能,如动态关键字,不构建在开发人员的机器上.
我有一个成功使用同步方法下载文件的应用程序(NSData的initWithContentsOfURL和NSURLConnection的sendSynchronousRequest),但现在我需要支持大文件.这意味着我需要逐位流式传输到磁盘.即使流式传输到磁盘并变为异步也应该是完全正交的概念,Apple的API迫使我去异步才能流式传输.
为了清楚起见,我的任务是允许更大的文件下载,而不是重新构建整个应用程序更加异步友好.我没有资源.但我承认,依赖于重新架构的方法是有效和良好的.
所以,如果我这样做:
NSURLConnection* connection = [ [ NSURLConnection alloc ] initWithRequest: request delegate: self startImmediately: YES ];
Run Code Online (Sandbox Code Playgroud)
..我最终有自己的didReceiveResponse和didReceiveData.优秀.但是,如果我尝试这样做:
NSURLConnection* connection = [ [ NSURLConnection alloc ] initWithRequest: request delegate: self startImmediately: YES ];
while( !self.downloadComplete )
[ NSThread sleepForTimeInterval: .25 ];
Run Code Online (Sandbox Code Playgroud)
从未调用过didReceiveResponse和didReceiveData.而且我已经弄明白了为什么.奇怪的是,异步下载发生在我正在使用的同一主线程中.因此,当我睡觉主线程时,我也正在睡觉做这项工作的事情.无论如何,我已经尝试了几种不同的方法来实现我想要的东西,包括告诉NSURLConnection使用不同的NSOperationQueue,甚至做dispatch_async来创建连接并手动启动它(我不知道这是怎么回事 - 我一定不能做得对,但似乎没有任何效果.编辑:我做得不对的是了解Run Loops如何工作,以及您需要在辅助线程中手动运行它们.
等待文件下载完成的最佳方法是什么?
编辑3,工作代码:以下代码实际上有效,但如果有更好的方法,请告诉我.
在原始线程中执行的代码,用于设置连接并等待下载完成:
dispatch_queue_t downloadQueue = dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 );
dispatch_async(downloadQueue, ^{
self.connection = [ [ NSURLConnection alloc ] initWithRequest: request delegate: self startImmediately: YES ];
[ [ NSRunLoop currentRunLoop …Run Code Online (Sandbox Code Playgroud) 我希望能够在运行时询问一个IEnumerable,如果它是一个延迟表达式,或者它是一个具体的集合.
因此,如果该方法被称为IsDeferred,则IsDeferred(myList.Where(i => i> 5))将返回true并且IsDeferred(myList.Where(i => i> 5).ToList())将返回false.
谢谢.
编辑:
我想我可以在没有提供我想做的根本原因的情况下问这个,但我猜不是.首先,正如其他人所指出的那样,在编译时无法告诉它.集合的类型不一定能告诉你它是否是懒惰的.您可以拥有一个IEnumerable,这是一个延迟查询而另一个不是(请参阅原始问题).使用强力来识别具体类型并不是一个优雅的解决方案.
现在,至于我想要这样做的原因.想象一个方法,它接受一个IEnumerable,然后多次引用它:
public void MyMethod<T>( IEnumerable<T> items) {
foreach( var item in items )
// Do stuff.
Console.WriteLine( "There are " + items.Count() + " items in the collection." );
if( items.Any() )
// Do some more things.
}
Run Code Online (Sandbox Code Playgroud)
现在,这看起来不错,但如果我叫的MyMethod(myList.Where(I => i.ReallyExpensiveOperation())),那么你就可以看到,贵在哪里是会得到执行三次.一次为迭代,一次为Count,再为Any.我可以通过让MyMethod的第一行做ToList()来解决这个问题.但是,如果我知道自己不必这样做(如果我知道它已经是一个具体的清单),那就更好了.我明白我可以重新写入(完全假的,而不是在所有现实世界的例子)的MyMethod多次未引用项集合,但我不感兴趣,作为一个解决方案.
再次感谢.
我有一个在XCode 4中为iOS6构建的应用程序.如果我在iOS7上运行该应用程序,它的外观和行为都很完美 - 与iOS6中常用的完全相同.
但是,如果我在XCode 5中模拟应用程序,即使我让目标操作系统保持不变,也存在一些问题.这对我来说没有意义.如果我需要对应用程序进行细微更改而不进行重大迁移(更改按钮的外观等),我是否必须继续使用XCode 4?