小编Mic*_*ler的帖子

实体框架查询速度慢,但SqlQuery中的SQL速度相同

我看到一些与使用.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,在两种情况下都会对结果实体进行更改跟踪,但两者之间存在差异.是什么赋予了?

performance entity-framework ef-code-first

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

单行创建一个带有一个条目的字典

我有一个方法,它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)

我怎么能一行呢?

c# dictionary

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

将double转换为int的结果是错误的

运行以下代码时,似乎存在某种模糊的舍入错误:

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.这是浮点引擎的缺陷吗?我从来没有见过这样的东西.

c++ casting floating-accuracy

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

即使jar文件在工作目录中也找不到类

我正在努力让我的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文件已损坏.尽管如此,我学到了很多东西.

java aix classpath

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

Java foreach循环找不到现有的列表元素

我正在遍历一组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)

谁能解释一下到底发生了什么?

java foreach

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

家庭和人民的代表

在C++中,我可以做这样的事情

class Person
{
    House * myhouse;
}

class House
{
    std::vector<Person*> members;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在C#中做类似的事情?

c# data-structures

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