簡體   English   中英

在EF遷移中更新大量數據

[英]Updating large amounts of data in an EF Migration

我有一個包含一億行左右的SQL表,其架構由EF遷移管理。

我想更改鏈接到該表的枚舉中的值,因此我需要將數據庫中的所有值更新為新值。 如下所示。

this.Sql("UPDATE MyTable SET MyEnum=0 WHERE MyEnum=-1");

在較小的表上這一切都很好,但是由於表的大小,它真的不適合一次運行這么大的更新(我得到了連接超時,tempdb空間問題,事務日志空間問題等)。 分批執行此操作將是更可取的。 例如:

while(ctx.MyTable.Any(m =>m.MyEnum == -1))
{
    this.Sql("UPDATE TOP (1000000) MyTable SET MyEnum=0 WHERE MyEnum=-1");
}

不幸的是,我無法找到一種在遷移期間從表中讀取數據的方法(例如,在遷移期間如何做到這一點ctx.MyTable.Any(m =>m.MyEnum == -1) )。 有沒有辦法做到這一點,以便我可以批量進行EF遷移更新。

我的建議是,在准確了解EF對您有多慢的情況下(即使是分批進行),將為您創建一個存儲過程以完全執行您想做的事情,然后簡單地進行遷移在存儲過程運行時調用它。 希望它應該快速運行,因為一切都將在SQL方面完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM