我找不到任何关于如何使用Linq to Entities进行批量/批量插入的例子。你们知道如何做一个批量插入?如何做批量插入 - Linq到实体
回答
有时你只需要混合模型。也许使用SqlBulkCopy
作为你存储库的这一部分(因为它直接插入到大容量复制API中),其余部分使用实体框架。如果有必要的话,可以直接使用ADO.NET。最终目标是完成工作。
有关如何使用LINQ to Entities进行批量插入的完美示例,请参阅http://archive.msdn.microsoft.com/LinqEntityDataReader。它是一个允许使用SqlBulkCopy的包装器。
@Marc Gravell是正确的,有时你必须混合模型才能完成工作。
我写了一个类,它将批量插入EF实体(或任何类型的对象,只要属性名称与列名称匹配)即可。
该类支持自定义批处理大小,前&后插入事件,排队插入和“流水模式”(给它十亿个对象,它将尊重批量大小)。
对于在数据库中插入一个庞大的数据量,我用来收集所有的信息插入一个列表,这个列表转换成DataTable
。然后我通过SqlBulkCopy
将该列表插入数据库。
我在哪里把我生成的列表LiMyList
包含我要插入到数据库
并将它传递给我的批量插入操作
InsertData(LiMyList, "MyTable");
哪里InsertData
是
public static void InsertData<T>(List<T> list,string TabelName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TabelName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
所有大容量数据的信息
您可以通过使用bulk insert extension
它使用SqlBulkCopy和自定义数据读取器来获得最佳性能。因此,它比使用常规插入或使用efbulkinsert延伸的AddRange
样品快20倍以上:
context.BulkInsert(hugeAmountOfEntities);
这是一个很棒的图书馆。我从零开始写了SqlBulkCopy的东西,但是这样更容易,更快捷 – Andrew 2017-04-11 11:13:02
- 1. 如何使用MySQL(如SqlBulkCopy)与Linq实体批量插入
- 2. 如何做休眠批量插入
- 3. 批量插入实体框架
- 4. 实体框架LINQ插入
- 5. LINQ到SQL - 插入实体关系
- 6. 插入使用LINQ到实体
- 7. 如何批量插入/更新LINQ到SQL?
- 8. Azure不能插入超过1个实体(批量插入) - JAVA
- 9. Django rq做批量db插入
- 10. Visual Studio C#Linq批量插入/更新
- 11. 如何使用LINQ调试插入到实体
- 12. 批量/批量插入R
- 13. LINQ到实体
- 14. 是否可以在Linq 2 Sql中批量或批量插入?
- 15. 便携式JPA批量/批量插入
- 16. 批量插入到mysql
- 17. HQL批量插入
- 18. 批量从csv插入到数据库使用Linq到sql
- 19. 内加入LINQ到实体
- 20. 如何做节点的Postgres批量插入
- 21. 我有一个标签表。如何使用LINQ批量插入?
- 22. LINQ到实体
- 23. 批量插入Cassandra
- 24. 如何批量插入使用SubSonic?
- 25. 带实体框架的批量插入/更新
- 26. 使用ADO.NET实体框架批量插入和更新
- 27. 使用实体框架的Updatet批量插入替代方案?
- 28. 使用流利的NHibernate批量插入实体集合
- 29. 实体框架4是否支持批量插入?
- 30. 使用实体框架批量插入6
哦不一 - 死链接 – 2015-05-06 05:04:01
在这里找到... https://github.com /matthewschrager/Repository/blob/master/Repository.EntityFramework/EntityDataReader.cs – 2015-05-06 05:10:56