【发布时间】:2015-12-23 10:48:24
【问题描述】:
我在这里有一个看似奇怪的问题。我是 Linq-to-SQL 的新手,所以我可能会遗漏一些明显的东西。
我有一个 DataContext dbml 代表我的数据库中的表,其中一个表代表一个日志表,它积累了很多记录。只需将此表添加到 dbml 似乎会将数据库中的每条记录填充到 DataContext 对象中(因此也是我的视图模型,因为数据上下文是视图模型的成员)。
直到我将 viewmodel 序列化为 XML 并注意到文件大小对于 viewmodel 中包含的数据来说相当大,我才注意到这一点。
打开 XML 显示该表中的每条日志记录都存在,尽管除了 Linq-to-SQL 数据上下文对象的初始化之外没有在任何地方引用(未引用表)。
我还没有检查其他表是否在做同样的事情(其他表非常小,因为这个项目和数据库仍然是新的),但是日志表占序列化文件大小的 80%。
这也令人担忧,因为它正在被查询并存储在内存中,从而降低了我的性能。一旦软件在使用中并且数据库以较大的速度增长,这将是一个大问题。
关于如何防止 Linq-to-SQL 提取每条记录的任何想法?谢谢。
【问题讨论】:
-
为什么ViewModel中有DataContext?如果你序列化它,它将序列化每个公共成员,包括每个表。您永远不应该将 DataContext 放在 ViewModel 中。
标签: c# sql visual-studio mvvm linq-to-sql