我看到一些与使用.NET框架版本4的Entity Framework Code-First的非常简单的查询相关的一些非常奇怪的性能.LINQ2Entities查询如下所示:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
Run Code Online (Sandbox Code Playgroud)
这需要超过3000毫秒才能执行.生成的SQL看起来非常简单:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
Run Code Online (Sandbox Code Playgroud)
在通过Management Studio运行时,此查询几乎立即运行.当我更改C#代码以使用SqlQuery函数时,它在5-10毫秒内运行:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Run Code Online (Sandbox Code Playgroud)
因此,完全相同的SQL,在两种情况下都会对结果实体进行更改跟踪,但两者之间存在差异.是什么赋予了?
我有一个方法,它Dictionary<int, int>作为一个参数
public void CoolStuff(Dictionary<int, int> job)
Run Code Online (Sandbox Code Playgroud)
我想用一个字典条目调用该方法,例如
int a = 5;
int b = 6;
var param = new Dictionary<int, int>();
param.Add(a, b);
CoolStuff(param);
Run Code Online (Sandbox Code Playgroud)
我怎么能一行呢?
运行以下代码时,似乎存在某种模糊的舍入错误:
int roundedTotal = (int)(PriorityJob * 100.0);
Run Code Online (Sandbox Code Playgroud)
最初PriorityJob = 1.4并且roundedTotal未定义.PriorityJob * 100.0那时的评估给出了140.之后roundedTotal = 139.
显然,140.0被解释为139.99999.这是浮点引擎的缺陷吗?我从来没有见过这样的东西.
我正在努力让我的Java程序在AIX上运行.我在Windows上使用Eclipse创建了一个可运行的Jar文件,jRams.jar如下所示.我继续得到一个类未找到错误,直到最后我把所有外部库放在同一目录中.
$ ls
JAXB2_20081030.jar
JAXB2_20110601.jar
activation.jar
asjava.jar
commons-beanutils-1.8.3.jar
commons-beanutils-bean-collections-1.8.3.jar
commons-beanutils-core-1.8.3.jar
commons-codec-1.5.jar
commons-collections-3.2.1.jar
commons-configuration-1.6.jar
commons-digester-2.1.jar
commons-jxpath-1.3.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
commons-logging-adapters-1.1.1.jar
commons-logging-api-1.1.1.jar
jRams.jar
jaxb-api.jar
jaxb-impl.jar
jaxb-xjc.jar
jaxb1-impl.jar
jremote.jar
jsr173_1.0_api.jar
log4j-1.2.16.jar
netty-3.2.4.Final.jar
$
Run Code Online (Sandbox Code Playgroud)
不过,我得到了类找不到错误.
$ java -jar jRams.jar
The java class is not found: com.jbase.jremote.JRemoteException
Run Code Online (Sandbox Code Playgroud)
jremote.jar肯定包含JRemoteException.为什么这不起作用?
UPDATE
感谢您的直截了当的答案.我现在更了解java应用程序和清单文件的本质.
事实证明我的ftp客户端是以ASCII模式而不是Binary传输的,因此jar文件已损坏.尽管如此,我学到了很多东西.
我正在遍历一组Parameter对象,寻找Parameter.name = "Code".如果我找不到它,我默认为列表中的第一个参数,如下所示:
header = WBMessageFactory.getWBMessageDescriptor(Configuration.getWBHeaderIDString());
for (Parameter p : header.getSegment().getParameter()) {
if (p.getName() == "Code") {
String wbCode = raw.substring(p.getStartPosition().intValue(), p.getLength().intValue());
logger.info("Found WB code... " + wbCode);
body = WBMessageFactory.getWBMessageDescriptor(wbCode);
break;
}
}
if (body == null) {
Parameter p = header.getSegment().getParameter().get(0);
logger.error("Could not find Code parameter in Header template, using " + p.getName());
body = WBMessageFactory.getWBMessageDescriptor(raw.substring(p.getStartPosition().intValue(), p.getLength().intValue()));
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我在Parameter找不到Code时记录该名称.有时,日志记录显示以下内容:
Could not find Code parameter in Header template, using Code
Run Code Online (Sandbox Code Playgroud)
谁能解释一下到底发生了什么?
在C++中,我可以做这样的事情
class Person
{
House * myhouse;
}
class House
{
std::vector<Person*> members;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能在C#中做类似的事情?