C# 在数据库asp.net MVC Codefirst中批量插入单词

C# 在数据库asp.net MVC Codefirst中批量插入单词,c#,asp.net,asp.net-mvc,database,model-view-controller,C#,Asp.net,Asp.net Mvc,Database,Model View Controller,我必须在db中插入70000多个单词,我正在尝试先进行编码。到目前为止,我就是这么做的,但似乎不起作用。有什么想法吗 protected override void Seed(AnagramBritAZ.DAL.AnagramContext context) { // This method will be called after migrating to the latest version. context.Configur

我必须在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();
        }
protected override void Seed(AnagramBritAZ.DAL.AnagramContext上下文)
{
//迁移到最新版本后将调用此方法。
context.Configuration.AutoDetectChangesEnabled=false;
context.Configuration.ValidateOnSaveEnabled=false;
var anagrams=新列表
{
新的字谜{Name=“anagram3”},
新的字谜{Name=“anagram4”}
};//这是为了测试添加这些功能是否有效
List wordslist=System.IO.File.ReadLines(@“C:\Users\etc\brit.txt”).ToList();
foreach(单词列表中的字符串单词)
{
Add(新的Anagram{Name=word});
}
anagrams.ForEach(c=>context.anagrams.AddOrUpdate(p=>p.Name,c));
SaveChanges();
}
编辑:在我等了几分钟后,它似乎起作用了,我猜刷新db的时间比我预期的要长。 问题是,这是将这些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();
}
List wordslist=System.IO.File.ReadLines(@“C:\Users\etc\brit.txt”).ToList();
var anagrams=words列表。选择(word=>new Anagram{
姓名=单词
}).ToList();
使用(var context=new AnagramBritAZ.DAL.AnagramContext())
{
context.Anagrams.AddRange(Anagrams);
SaveChanges();
}

错误消息是什么?我确实在manager控制台中更新了数据库,没有错误,需要几分钟才能完成,但没有错误,我在编辑文章后在数据库中看不到任何新行。你的问题很广泛。有很多方法可以做到这一点,通过SQL、单独的控制器操作、异步任务,甚至客户端对服务器的调用?我们需要更多的背景。表列,是否为标识自动递增?等等…context.Configuration.AutoDetectChangesEnabled=false如何;context.Configuration.ValidateOnSaveEnabled=false;这条路对吗?没有他们要花很多时间是的。最好创建一个方法。如果对数据进行种子设定,请使用种子设定方法。否则就不需要了。context.Configuration.AutoDetectChangesEnabled=false;context.Configuration.ValidateOnSaveEnabled=false;如果不使用种子方法,则不需要。