我想使用物體框架將資料串列插入到 Postgresql 中的表中。
任何人都可以通過建議語法或演算法來提供幫助嗎?
uj5u.com熱心網友回復:
就像@Nick 所說的原始 sql 并不理想,特別是如果您要插入 100k 值,在批量插入方面有很多選項我特別使用BulkInsert找到下面更簡單的示例
using (var dbContextTransaction = _Context.Database.BeginTransaction())
{
try
{
//bulk insert list of user objects in users table
_Context.BulkInsert(list_of_users, options =>
{
options.InsertIfNotExists = true
options.ColumnPrimaryKeyExpression = x => new{x.id};
});
dbContextTransaction.Commit();
}
catch (Exception ex)
{
dbContextTransaction.Rollback();
throw;
}
}
但是,如果您堅持構建原始 sql 查詢并在這里執行它的硬路線,我會這樣做,我會將串列分成 10k 的批次以避免記憶體問題
var insert_query = "INSERT INTO TABLE (Column_1,Column_2,Column_3)VALUES";
int count=0;
foreach (var obj in list_data)
{
var size = count 1;
if(count is 0)
insert_query = $"({obj.param1},{obj.param2},{obj.param3})";
else
insert_query = $",({obj.param1},{obj.param2},{obj.param3)";
if(size.Equals(data.Count()))
insert_query = ";";
count ;
}
int rows_affected = _Context.Database.ExecuteSqlRaw(insert_query);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/473959.html
標籤:PostgreSQL 实体框架
上一篇:ASP.NETCoreIdentity在AspNetUserRoles中添加了額外的外鍵
下一篇:Json到EF中重復
