Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架批量加载太慢添加种子 protected override void Seed(Fitlife.Domain.Concrete.EFDBContext) { List foodweights=getline(basePath+foodweights.txt); int计数器=0; foodweights.ForEach(行=> { FoodWeights newVal=新的FoodWeights() { FoodCode=int.Parse(第[0]行), PortionCode=int.Parse(第[1]行), PortionWeight=decimal.Parse(第[2]行) }; context.FoodWeights.Add(newVal); 如果(++计数器==1000) { 计数器=0; SaveChanges(); } }); }_C#_Entity Framework_Bulk Load - Fatal编程技术网

C# 实体框架批量加载太慢添加种子 protected override void Seed(Fitlife.Domain.Concrete.EFDBContext) { List foodweights=getline(basePath+foodweights.txt); int计数器=0; foodweights.ForEach(行=> { FoodWeights newVal=新的FoodWeights() { FoodCode=int.Parse(第[0]行), PortionCode=int.Parse(第[1]行), PortionWeight=decimal.Parse(第[2]行) }; context.FoodWeights.Add(newVal); 如果(++计数器==1000) { 计数器=0; SaveChanges(); } }); }

C# 实体框架批量加载太慢添加种子 protected override void Seed(Fitlife.Domain.Concrete.EFDBContext) { List foodweights=getline(basePath+foodweights.txt); int计数器=0; foodweights.ForEach(行=> { FoodWeights newVal=新的FoodWeights() { FoodCode=int.Parse(第[0]行), PortionCode=int.Parse(第[1]行), PortionWeight=decimal.Parse(第[2]行) }; context.FoodWeights.Add(newVal); 如果(++计数器==1000) { 计数器=0; SaveChanges(); } }); },c#,entity-framework,bulk-load,C#,Entity Framework,Bulk Load,上面的方法用于填充我的数据库。但是1000个条目需要50秒我有一个包含470k个条目的文件,如何提高性能我使用的是entity framework,当我这样做时会调用这个方法 PM>更新数据库 使用包管理器。我需要类似的功能,我是非常新的asp.net和实体框架的任何指导将不胜感激 PS:花50秒处理1000个条目可以吗,还是我做错了什么。种子方法在每次应用程序启动时都会运行,因此您编码它的方式将尝试一次又一次地添加FoodWeights。EF提供了AddOrUpdate作为一种方便的方法来防止

上面的方法用于填充我的数据库。但是1000个条目需要50秒我有一个包含470k个条目的文件,如何提高性能我使用的是entity framework,当我这样做时会调用这个方法 PM>更新数据库 使用包管理器。我需要类似的功能,我是非常新的asp.net和实体框架的任何指导将不胜感激


PS:花50秒处理1000个条目可以吗,还是我做错了什么。

种子方法在每次应用程序启动时都会运行,因此您编码它的方式将尝试一次又一次地添加
FoodWeight
s。EF提供了
AddOrUpdate
作为一种方便的方法来防止这种情况,但它确实不适合批量插入

您可以直接在数据库上使用sql—如果您使用的是sql server,则sql可以是

我会将sql进行上迁移,因为您可能只想从已知状态运行insert一次,并且它避免了担心上下文的效率和跟踪更改等问题


这里有示例代码和更多信息:

每次应用程序启动时,Seed方法都会运行,因此您对其进行编码的方式将尝试一次又一次地添加
FoodWeight
s。EF提供了
AddOrUpdate
作为一种方便的方法来防止这种情况,但它确实不适合批量插入

您可以直接在数据库上使用sql—如果您使用的是sql server,则sql可以是

我会将sql进行上迁移,因为您可能只想从已知状态运行insert一次,并且它避免了担心上下文的效率和跟踪更改等问题


这里有示例代码和更多信息:

不幸的是,EF不能很好地处理批处理/批量作业。我只想使用,它是为批量插入而设计的。你能给我提供一些例子吗?我可以在种子函数中使用sqlbulkcopy,我希望仍然能够使用包管理器命令,比如PM>update Database FoodWeights.txt包含多少条记录?我知道你每节省1000行。看起来它仍然会在整个文件中循环,如果FoodWeights.txt是一个大文件,这可能需要相当长的时间。我只想使用,它是为批量插入而设计的。你能给我提供一些例子吗?我可以在种子函数中使用sqlbulkcopy,我希望仍然能够使用包管理器命令,比如PM>update Database FoodWeights.txt包含多少条记录?我知道你每节省1000行。看起来它仍然会在您的整个文件中循环,如果FoodWeights.txt是一个大文件,这可能需要相当长的时间。感谢您提供的提示,我使用了SqlBulkInsert及其快速功能,我会将种子放入向上迁移,但我重写的种子函数的目的是什么,它是否方便。我在这个答案上发布了更多信息-有更多阅读的链接谢谢你的提示,我使用了SqlBulkInsert及其快速功能,我会将种子放入上迁移,但是我重写的种子函数的目的是什么,它是否方便。我在这个答案上发布了更多信息-有更多阅读的链接
    protected override void Seed(Fitlife.Domain.Concrete.EFDBContext context)
    {
        List<List<string>> foodweights = GetLines(basePath + "FoodWeights.txt");
        int counter = 0;
        foodweights.ForEach(line =>
        {
            FoodWeights newVal = new FoodWeights()
            {
                 FoodCode = int.Parse(line[0]),
                  PortionCode = int.Parse(line[1]),
                 PortionWeight = decimal.Parse(line[2])
            };
            context.FoodWeights.Add(newVal);

            if (++counter == 1000)
            {
                counter = 0;
                context.SaveChanges();                  
            }
        });
}