我正在创建一个对象列表并将它们添加到我的DbContext
,然后保存它们。问题是我向数据库添加了一个唯一约束来阻止具有重复数据的对象。
因为在SaveChanges
上抛出了错误,我可以尝试单独保存每个对象并捕获错误。这是一个糟糕的解决方案,有没有更好的方法来处理它?</ p>
using (FinanceDBContext financeDBContext = new FinanceDBContext())
{
foreach (var item in priceList)
{
item.Apimapping = null;
financeDBContext.Price.Add(item);
}
financeDBContext.SaveChanges();
}
我的Price
对象
public partial class Price
{
public int PriceId { get; set; }
public decimal LastPrice { get; set; }
public decimal Bid { get; set; }
public decimal Ask { get; set; }
public DateTime DateCreated { get; set; }
public int? ApimappingId { get; set; }
public Apimapping Apimapping { get; set; }
}
答案 0 :(得分:2)
首先检查提供清单中的重复项
var distinctBids = priceList.Select(p => p.Bid).ToList();
if (priceList.Count != distinctBids.Count())
return BadRequest(); // even the provided list have duplicates;
检查输入值的重复项
if (context.Price.Any(e=> distinctBids.Contains(e.Bid)))
return BadRequest(); // check for duplicates in database
之后可以安全地插入值
// Now its safe to add new prices;
foreach (var item in priceList)
{
item.ApimappingId = null;
context.Employees.Add(item);
}
context.SaveChanges();
您还需要按照here
所述,将所有上述陈述放在一个牵引力中