我正在构建一个应用程序来显示源代码控制存储库中更改的历史日志。该应用程序在 .NET 4 WPF 和 Entity Framework Code First 中实现。
我遇到的问题之一是,随着时间的推移,随着更多日志条目被添加到日志中,应用程序使用越来越多的内存并且不会释放对日志条目的引用。每个日志条目都包含一个“已更改文件”列表,并且对于每个已更改文件,文件的前后版本。
UI 显示日志条目列表以及当前选择的新旧版本LogEntry
和ChangedFile
. 数据模型大致如下:
public class LogSubscription
{
public List<LogEntry> Log { get; set; }
}
public class LogEntry
{
public List<ChangedFile> ChangedFiles { get; set; }
}
public class ChangedFile
{
public string OldVersion { get; set; }
public string NewVersion { get; set; }
}
由于我使用的是 EF Code First,因此只需访问 List 属性即可查询数据库并自动构建对象模型。我想做的是ChangedFiles
在一段时间后以某种方式取消对列表的引用,并根据需要重新查询数据库并重建对象模型(即用户已单击返回日志条目)。
EF Code First 有什么方法可以做到这一点?或者我应该采取不同的方法来控制所使用的内存?
该应用程序和完整的源代码托管在 GitHub 上:https ://github.com/tomhunter-gh/SourceLog