Entity Framework 4.0与Sql Compact Edition 4.0性能问题

时间:2011-04-08 22:19:12

标签: entity-framework-4 sql-server-ce

我有一个带有EF模型的Web应用程序,我最初使用SQL Server 2008后端设计。后来,我决定使用SQL CE来实现可移植性,所以我将模型转换为目标Sql CE 4.0。但是,我在运行此应用程序时遇到了严重的性能问题。

例如,我在代码中有一部分从数据库中检索实体:

        Trace.Write("Retrieving node from database", "Application");
        var name = value.ToString();
        var node = DataContext.Entities.Nodes
            .SingleOrDefault(n => n.Name == name);
        Trace.Write("Node retrieved from database ", "Application");

当我查看跟踪信息(trace.axd)时,这些代码行需要0.6秒!!

跟踪信息

Category       Message                         From First(s)    From Last(s)
Application Retrieving node from database   0.00057591118424269 0.000576
Application Node retrieved from database    0.595122564460008   0.594547

这在我的应用程序中随处可见,我按名称查询。

有什么想法吗?我猜我必须在列上定义一个索引,但是我如何在EF模型中做到这一点?

编辑: Gramma 编辑2:标题中的拼写

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我过去曾使用过旧版本的SQL CE,而且我发现一个主要的瓶颈就是打开连接。

您可以尝试自己管理开放连接,并手动将其传递到数据上下文中(而不是允许上下文自动管理连接。)