You must create an new object in every loop
_context.SaveChanges(); generate an new id in the first loop but keep this id for all other loop. In addition to that this foreach loop add several time the same object.
foreach (var objUser in responseToken.SpecificUsers.SpecificUsers)
{
var newFlashSaleMapping = new FlashSaleMapping();
newFlashSaleMapping.FlashSaleId = flashSalesObj.Id;
newFlashSaleMapping.MappingId = Convert.ToInt32(objUser);
newFlashSaleMapping.type = "Users";
newFlashSaleMapping.CreatedOnUTC = DateTime.Now;
_context.FlashSaleMapping.Add(newFlashSaleMapping);
}
_context.SaveChanges(); //bulk sav
//LINQ version
var newFlashSaleMappings = responseToken.SpecificUsers.SpecificUsers.Select((flashSalesObj) = >
new FlashSaleMapping() {
FlashSaleId = flashSalesObj.Id,
MappingId = Convert.ToInt32(objUser),
type = "Users",
CreatedOnUTC = DateTime.Now
});
_context.FlashSaleMapping.AddRange(newFlashSaleMapping);
_context.FlashSaleMapping.SaveChanges();