Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# EF BulkInsert未在Task.Run()中触发_C#_Asp.net_Entity Framework_Asp.net Web Api_Bulkinsert - Fatal编程技术网

C# EF BulkInsert未在Task.Run()中触发

C# EF BulkInsert未在Task.Run()中触发,c#,asp.net,entity-framework,asp.net-web-api,bulkinsert,C#,Asp.net,Entity Framework,Asp.net Web Api,Bulkinsert,我在Task.Run(()=>AircraftManager.UploadAircraft(fileContent))中调用一个方法我正在执行的内部方法BulkInsert(),但它并没有在数据库中添加记录。但是,如果我在没有Task.run()的情况下运行,它工作得很好,但需要更长的时间 注:上传Aircraft-2019.csv包含超过22000条记录 这是我的密码 控制器.cs [HttpPost] 公共IHttpActionResult上载飞机() { //如果请求包含多部分/表单数据。

我在
Task.Run(()=>AircraftManager.UploadAircraft(fileContent))中调用一个方法我正在执行的内部方法
BulkInsert()
,但它并没有在数据库中添加记录。但是,如果我在没有
Task.run()
的情况下运行,它工作得很好,但需要更长的时间

注:上传Aircraft-2019.csv包含超过22000条记录

这是我的密码

控制器.cs

[HttpPost]
公共IHttpActionResult上载飞机()
{
//如果请求包含多部分/表单数据。
如果(!Request.Content.IsMimeMultipartContent())
{
抛出新的HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var provider=currentRequest.Value.Content.ReadAsMultipartAsync(new Classes.Mach.AuthorizationServer.API.Providers.MultipartFormDataStreamProvider()).Result;
IList receivedfiles=provider.Files;
//上载多个文件
List uploadResults=新列表();
foreach(接收文件中的HttpContent文件)
{
var receivedFileName=file.Headers.ContentDisposition.FileName.Trim(“\”);
var receivedkey=file.Headers.ContentDisposition.Name.Trim(“\”);
byte[]fileContent=file.ReadAsByteArrayAsync().Result;
运行(()=>AircraftManager.UploadAircraft(receivedkey,receivedFileName,fileContent));
}
返回Ok(新ApiResponse(true,“文件上传成功”,上传结果));
}
AircraftManager.cs

public void uploadAircrafter(字符串文档类型、字符串文件名、字节[]内容)
{
if(filename.ToLower().EndsWith(“csv”))
{
使用(内存流=新内存流(内容))
{
使用(CsvReader CsvReader=新CsvReader(新StreamReader(stream),true))
{
var records=csvReader.GetRecords();
List aircraftList=新列表();
foreach(记录中的var项目)
{
飞机=新飞机();
aircraft.BusinessName=item.BusinessName;
aircraft.IssuingCountry=项目.IssuingCountry;
aircraft.CertificateCode=项目.CertificateCode;
aircraft.CertificateHolderName=项目.CertificateHolderName;
飞机尾号=项目尾号;
aircraft.SerialNumber=item.SerialNumber;
airpair.yearmake=!string.IsNullOrWhiteSpace(item.yearmake)和&item.yearmake!=“NULL”?将.ToInt32(item.yearmake):(int?)NULL;
飞机。制造商=项目。制造商
飞机列表。添加(WyVernAircrafts);
}
dbContext.Aircraft.BulkInsert(aircraftList);
}
}
}
}

只需使用block从
MemoryStream
中删除dbContext调用,并用
dbContext.Aircraft.BulkInsert(aircraftList)
替换为
dbContext.BulkInsert(aircraftList)
,如下所示:


List aircraftList=新列表();
使用(内存流=新内存流(内容))
{
使用(CsvReader CsvReader=新CsvReader(新StreamReader(stream),true))
{
var records=csvReader.GetRecords();
foreach(记录中的var项目)
{
飞机=新飞机();
aircraft.BusinessName=item.BusinessName;
aircraft.IssuingCountry=项目.IssuingCountry;
aircraft.CertificateCode=项目.CertificateCode;
aircraft.CertificateHolderName=项目.CertificateHolderName;
飞机尾号=项目尾号;
aircraft.SerialNumber=item.SerialNumber;
airpair.yearmake=!string.IsNullOrWhiteSpace(item.yearmake)和&item.yearmake!=“NULL”?将.ToInt32(item.yearmake):(int?)NULL;
飞机。制造商=项目。制造商
飞机列表。添加(WyVernAircrafts);
}
}
}
dbContext.BulkInsert(飞机列表);

只需使用block从
MemoryStream
中删除dbContext调用,并用
dbContext.Aircraft.BulkInsert(aircraftList)
替换为
dbContext.BulkInsert(aircraftList)
,如下所示:


List aircraftList=新列表();
使用(内存流=新内存流(内容))
{
使用(CsvReader CsvReader=新CsvReader(新StreamReader(stream),true))
{
var records=csvReader.GetRecords();
foreach(记录中的var项目)
{
飞机=新飞机();
aircraft.BusinessName=item.BusinessName;
aircraft.IssuingCountry=项目.IssuingCountry;
aircraft.CertificateCode=项目.CertificateCode;
aircraft.CertificateHolderName=项目.CertificateHolderName;
飞机尾号=项目尾号;
aircraft.SerialNumber=item.SerialNumber;
airpair.yearmake=!string.IsNullOrWhiteSpace(item.yearmake)和&item.yearmake!=“NULL”?将.ToInt32(item.yearmake):(int?)NULL;
飞机。制造商=项目。制造商
飞机列表。添加(WyVernAircrafts);
}
}
}
dbContext.BulkInsert(飞机列表);

请添加说明fu的问题和修复方法