【问题标题】:System.OutOfMemoryException with entity frameworkSystem.OutOfMemoryException 与实体框架
【发布时间】:2010-11-15 15:55:57
【问题描述】:

当我用大表刷新实体框架时,我得到 System.OutOfMemoryException。

有没有更好的方法来用大表刷新 EF?我正在使用.Net 3.5

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    就像 Darin 所说的,模型的刷新不会加载任何行。

    由于您在代码中刷新模型,我怀疑您的代码中可能存在加载所有行的内容,或者存在无限循环。

    您可以通过打开文件并编辑 xml 来直接编辑 EF 模型。但如果你这样做,你需要非常小心。

    【讨论】:

    • 我希望我能正确解释。我有一些执行数据库更新的代码。它有2个部分。 1. EF调用存储过程更新DB。 (这是现有的大逻辑。所以我不能在 linq 中重写) 2. EF + linq 也以相同的方法进行一些 DB 操作。在某些时候,它会使用 SP 完成的数据库更改。问题是,EF 无法识别 SP 所做的更改。当 EF 获取数据时,它仍然具有旧值。如何刷新 EF?
    • 只有对表结构进行了改动,才需要刷新模型。
    • 您是否尝试插入行或更改表的结构?
    【解决方案2】:

    我不知道用大表刷新 EF 是什么意思,但避免这种异常的唯一方法是确保不要将大量数据加载到内存中或为您的机器添加更多内存。

    【讨论】:

    • 我的意思是 Model.Refresh(RefreshMode.StoreWins, tablename)。该表有 4919653 行。这样做的原因是,这个表是由 sql 更新的。 EF 无法识别此更改。
    • 除了说:不要将 4919653 行加载到内存中之外,我不知道如何帮助您。
    • 如果有任何其他方法可以让实体框架知道 sql 所做的更改。
    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 2010-10-30
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    相关资源
    最近更新 更多