Performance 实体框架核心插入多个实体,类似于SQL单插入语句

Performance 实体框架核心插入多个实体,类似于SQL单插入语句,performance,entity-framework-core,Performance,Entity Framework Core,如何获得与SQL simple相同的效果 INSERT INTO myTable VALUES (X), (Y), (Z),..... 依此类推?您可以按照以下步骤生成查询并执行相同的查询: DatabaseContext.Database.ExecuteSqlCommand(yourQuery); 请参阅文档。尽管它与EF相关,但也适用于EF核心var entityList=new List(); var entityList = new List<Entity>(); e

如何获得与SQL simple相同的效果

INSERT INTO myTable VALUES (X), (Y), (Z),..... 

依此类推?

您可以按照以下步骤生成查询并执行相同的查询:

DatabaseContext.Database.ExecuteSqlCommand(yourQuery);
请参阅文档。尽管它与EF相关,但也适用于EF核心

var entityList=new List();
var entityList = new List<Entity>();

entityList = {
   new Entity { Property1 = Value, Property2 = "Value"},
   new Entity { Property1 = Value, Property2 = "Value"}
}

context.AddRange(entityList); //Add() for single entity
context.SaveChanges();
entityList={ 新实体{Property1=Value,Property2=“Value”}, 新实体{Property1=Value,Property2=“Value”} } context.AddRange(entityList)//单个实体的Add() SaveChanges();
如果您将EF Core与SQL Server一起使用,并且必须插入大量实体,则可以选择以下使用的库之一:

使用非常简单

List<MyEntity> entities = ...;

await context.BulkInsertAsync(entities);
列出实体=。。。;
wait context.BulkInsertAsync(实体);
是将实体放入SQL Server的最快方法

请注意,与原始SQL语句一样,
DbContext
不知道此操作,因此需要注意一些。但是,如果必须插入大量数据,那么使用一些更接近数据库的技术就没有太多选择


这不是执行了多次往返吗?当然是在
SaveChanges()
上-在
AddRanges()
DetectChanges将只调用一次。只是出于好奇-如果您直接通过SQL命令执行这些操作,它会立即保存吗?这不就是最终难以阅读的代码吗?这不是批评或其他任何东西——我只是想学习一些新的东西,并把它放在我思想的正确角落是的,你说得对。这只能用于提高性能,因为您可以将问题的焦点放在操作的性能上!谢谢,这可能就是我要找的!