【发布时间】:2018-08-25 05:46:54
【问题描述】:
我想通过在 Foreach 循环中迭代来保存我的对象,并将结果返回给我的控制器
这是控制器代码:
public async Task<HttpResponseMessage> PostSubmissionFirm(JArray ParamList)
{
logger.Info(string.Format("---------- PricingController Information //// PostSubmissionFirm"));
if (ParamList.Count > 0)
{
try
{
string xxx1 = null;
string xxxx2 = null;
string xxxx3 = null;
string xxxx4 = null;
Cccier Ci = new Cccier (ParamList);
List<string> verify = Ci.VerifObject();
if (verify.Count == 0)
{
var Premium = Ci.calculate();
HttpResponseMessage response = new HttpResponseMessage { StatusCode = HttpStatusCode.Created };
return new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new JsonContent(new { Premium = Premium, , DateExpire = DtExp.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) })
};
}
else
{
HttpError err = new HttpError(message);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, err);
}
}
catch (Exception e)
{
}
}
}
我调用的方法计算结果是:
public async Task<string> calculate()
{
int i = 1;
foreach (var Contextli in qlimit)
{
Prem= Prm <= 1500 ? 1500 : Math.Round(Premium, 2);
double Adnal1 = 100;
double Adnal2 = Math.Round(Adnal1, 2);
Submi SubRep = new Submi ();
SubRep.IdSouSubmi = 90;
SubRep.IdPremm= i;
SubRep.IdLi = Idl;
SubRep.IdFran = idf;
db.Submi.Add(SubRep);
await db.SaveChangesAsync();
}
string JSONString = string.Empty;
JSONString = JsonConvert.SerializeObject(dt);
return JSONString;
}
但我在 foreach 循环的第一次迭代后立即收到一条错误消息:
错误:500Internal Server Error{“消息”:“Une erreur s'est produite lors du démarrage d'une transaction sur la connexion dufournisseur。Pour plus d'informations, Consultez l'exception interne。” }
【问题讨论】:
-
看看你内心的异常(interne异常)。这可能(几乎 100% 肯定)因为每次迭代都使用相同的 DbContext 并且 EF 的 DbContext 不是线程安全的
-
我想这就是问题所在。但是我怎样才能为每次迭代创建 dbcontetext 线程。还有 thkxxx
-
首先,当错误信息不是英文时,很难获得帮助。请参阅:How to Ask 和 How to write a Minimal, Complete, and Verifiable example。
标签: c# entity-framework async-await