我正在编写一个WPF客户端应用程序,使用Linq to Sql with Sql Compact edition。 db相对较小(3MB)且只读。
最重要的是,表现不如我希望的那样好,我正在寻找提示和实用的方法来增加它。
更多事实: 该模式包含大约十几个实体,它们之间有广泛的关系。
分析应用程序发现查询运行得非常快,但构建c#实体是花费最多时间的过程(可能长达8秒)。 大多数情况下,我相信因为我们使用了LoadWith,而DataContext别无选择,只能在内存中构建对象图。
如果需要,我可以提供其他信息。
编辑:
感谢您的帮助。
爱丽儿
答案 0 :(得分:1)
好吧,您可能会发现使用延迟加载(而不是急切加载)可能有助于提高性能(即避免使用LoadWith),因为实体不需要为关系链分配内存(或者深度加载对象图)相反,它们将按需填充。
但是,您需要专注于您的设计以支持这一点(否则您将简单地移动性能瓶颈,使其对于针对SQL CE数据库执行的SQL语句变得过于“讨厌”。
DataContext在跟踪更改时也会开始膨胀(内存)。您可能需要考虑使用数据上下文的方法(例如,如果已经处理了原始上下文,您可以将它们附加到新的上下文中。)
答案 1 :(得分:0)
一个非常简单的解决方案是使用静态声明的编译linq查询。这当然不是那么实用,但它会提高性能,因为表达式树只需要在编译时构建一次,而不是每次调用查询执行时动态创建。
这可能会有所帮助: