簡體   English   中英

在數據庫asp.net MVC Codefirst中批量插入單詞

[英]Bulk insert words in database asp.net MVC Codefirst

我必須在 db 中插入超過 70000 個單詞,我正在嘗試先代碼。 這是我到目前為止所做的,但似乎不起作用。 有任何想法嗎?

protected override void Seed(AnagramBritAZ.DAL.AnagramContext context)
        {
            //  This method will be called after migrating to the latest version.
            context.Configuration.AutoDetectChangesEnabled = false;
            context.Configuration.ValidateOnSaveEnabled = false;
            var anagrams = new List<Anagram>
            {
                new Anagram { Name = "anagram3"},
                new Anagram { Name = "anagram4"}
            }; // this was for testing to see if adding these works

            List<string> wordslist = System.IO.File.ReadLines(@"C:\Users\etc\brit.txt").ToList();

            foreach (string word in wordslist)
            {
                anagrams.Add(new Anagram { Name = word });
            }


            anagrams.ForEach(c => context.Anagrams.AddOrUpdate(p => p.Name, c));
            context.SaveChanges();
        }

編輯:我等了幾分鍾后似乎可以工作了,我猜刷新數據庫的時間比我預期的要長。 問題是這是將這些 70k+ 字添加到數據庫的最佳方式嗎? 或者,還有更好的方法? (這是對一家公司的一次面試前的測試)

您可以使用AddRange方法。

例子:

List<string> wordslist = System.IO.File.ReadLines(@"C:\Users\etc\brit.txt").ToList();

var anagrams= wordslist.Select(word=> new Anagram{
    Name = word
    }).ToList();

using(var context= new AnagramBritAZ.DAL.AnagramContext())
{
    context.Anagrams.AddRange(anagrams);
     context.SaveChanges();
}

暫無
暫無

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

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