[EntityFramework6,由于有InitializedDatabases列表,所以有大量表使用的内存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[EntityFramework6,由于有InitializedDatabases列表,所以有大量表使用的内存相关的知识,希望对你有一定的参考价值。
在我们的应用程序中,有大量的表(大约50k)-所有这些表都被实际使用,这导致实体框架中的内存消耗很高。
[经过一些内存分析后,我注意到DbCompiledModel类被保留在内存中,因此在进行一些搜索之后,它一直跟踪到LazyInternalContext类,该类保留了“ InitializedDatabases”列表。
https://github.com/dotnet/ef6/blob/master/src/EntityFramework/Internal/LazyInternalContext.cs#L670
是否有防止实体框架执行此操作的方法?这不是代码优先设置,如果“ InitializeDatabaseAction”所暗示的是,则此应用程序中不会进行数据库设置和迁移。
[将“返回null”设置为true或将“ InitializerDisabled”设置为true会使一切正常,但宁愿不运行自定义实体版本,也不知道仅仅“更改”源代码会有什么影响。
大多数表具有相同的定义,因此也尝试了我在这里找到的解决方案:Change table name at runtime
[尝试此操作时出现错误“该命令存在一个开放数据读取器”,不支持使用postgres和MARS(不知道为什么需要它,这只会更改正在运行的sql)] >
在我们的应用程序中,有大量的表(大约50k)-所有这些表都被实际使用,这导致实体框架中的内存消耗很高。经过一段记忆后...
解决方案在bu Ivan Stoev的评论中给出,并且工作。
以上是关于[EntityFramework6,由于有InitializedDatabases列表,所以有大量表使用的内存的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework 6 MySQL - 与 MySQL 引擎的性能差异