用ef批量新增数据

-一个大坑 2018-05-04 04:57:23
我现在写的用for循环每笔保存一下,这样不能同时成功或失败
怎么拼接成list?直接用paymentAgentService.AddRange(LIst<DlrPaymentAgent>);保存list

public IActionResult SaveGetPayment(string[] nameArr, DlrPayment payment)
{
try
{
var agentService = new DlrBdAgentService(_unitOfWork);
var paymentAgentService=new DlrPaymentAgentService(_unitOfWork);
var agentList = agentService.GetList(o => nameArr.Contains(o.AgentName)).Select(o => new { o.AgentCode, o.AgentName }).ToList();
for (int i = 0; i < agentList.Count; i++)
{
DlrPaymentAgent paymentAgent = new DlrPaymentAgent();
paymentAgent.AgentCode = agentList[i].AgentCode;
paymentAgent.AgentName = agentList[i].AgentName;
paymentAgent.PaymentCode = "XXXXX";
paymentAgentService.AddSave(paymentAgent);
_unitOfWork.Commit();
}
}
catch (Exception ex)
{
return Content("費用申請送出失敗!原因:" + ex.Message);
}
}
...全文
1380 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41063048 2018-08-17
  • 打赏
  • 举报
回复
直接用.tolist(); 然后用事务就可以了
  • 打赏
  • 举报
回复
反查数据库,我错别字多,随便批评我是不会改的。
  • 打赏
  • 举报
回复
引用 11 楼 happy4944 的回复:
[quote=引用 10 楼 xomix 的回复:] [quote=引用 9 楼 happy4944 的回复:] [quote=引用 8 楼 Z6454610012 的回复:] 没注意看,你用AddRange就好了,会返回受影响行数,你判断一下是否与数据行数相同
我要的是这种,但是我要保存的list还差一个属性没有值,我要加值后才能用AddRange保存 [/quote] 自己后台处理一下list。[/quote] 发帖就是问要怎么加一个值进去[/quote] List<本来的list> lst=获取方法(); List<新的list> nlst=new List<>(); forecah 老的list 新list类型(参数足够的) item=new 新类型(); 一项一项复制,没有的那一项赋值为空或者反差。 这个你真的不知道???
-一个大坑 2018-05-09
  • 打赏
  • 举报
回复
引用 10 楼 xomix 的回复:
[quote=引用 9 楼 happy4944 的回复:] [quote=引用 8 楼 Z6454610012 的回复:] 没注意看,你用AddRange就好了,会返回受影响行数,你判断一下是否与数据行数相同
我要的是这种,但是我要保存的list还差一个属性没有值,我要加值后才能用AddRange保存 [/quote] 自己后台处理一下list。[/quote] 发帖就是问要怎么加一个值进去
  • 打赏
  • 举报
回复
引用 9 楼 happy4944 的回复:
[quote=引用 8 楼 Z6454610012 的回复:] 没注意看,你用AddRange就好了,会返回受影响行数,你判断一下是否与数据行数相同
我要的是这种,但是我要保存的list还差一个属性没有值,我要加值后才能用AddRange保存 [/quote] 自己后台处理一下list。
-一个大坑 2018-05-08
  • 打赏
  • 举报
回复
引用 8 楼 Z6454610012 的回复:
没注意看,你用AddRange就好了,会返回受影响行数,你判断一下是否与数据行数相同
我要的是这种,但是我要保存的list还差一个属性没有值,我要加值后才能用AddRange保存
zhuhangit 2018-05-08
  • 打赏
  • 举报
回复
引用 4 楼 happy4944 的回复:
[quote=引用 2 楼 Z6454610012 的回复:] 你不用事务,都不能保证同时成功或者失败
_unitOfWork.Commit();这个就是,前面只是怎么数据,_unitOfWork.Commit();后才保存[/quote] 没注意看,你用AddRange就好了,会返回受影响行数,你判断一下是否与数据行数相同
-一个大坑 2018-05-08
  • 打赏
  • 举报
回复
引用 5 楼 xomix 的回复:
_unitOfWork.Commit(); 移出循环外即可。
我现在写的是这样,我想知道有没有拼接一个值进去的方法,这样就不用循环
  • 打赏
  • 举报
回复
但是你注意你这样做会导致你的表长时间锁定,所以如果这个业务会有很多人同时处理不建议这么做。 如果操作同时有人查询,查询要加with(nolock)变更锁,防止查询等待超时。
  • 打赏
  • 举报
回复
_unitOfWork.Commit(); 移出循环外即可。
-一个大坑 2018-05-08
  • 打赏
  • 举报
回复
引用 2 楼 Z6454610012 的回复:
你不用事务,都不能保证同时成功或者失败
_unitOfWork.Commit();这个就是,前面只是怎么数据,_unitOfWork.Commit();后才保存
zhuhangit 2018-05-07
  • 打赏
  • 举报
回复
你不用事务,都不能保证同时成功或者失败
-一个大坑 2018-05-05
  • 打赏
  • 举报
回复

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧