私のスーパーマーケット モデルには、StockItem クラスと、StockItem フィールドを含む Alert クラスが含まれています。
public class StockItem
{
public int ID { get; set; }
public string Name { get; set; }
public int CurrentQuantity { get; set; }
public int MinQuantity { get; set; }
}
public class Alert
{
public int ID { get; set; }
public int Message{ get; set; }
public virtual StockItem StockItem { get; set; }
}
1 つの DbContext ですべての StockItems をフェッチする関数があります。
using (var db = new MyDbContext())
{
return db.StockItems.ToList();
}
これらのアイテムを処理し、別の DbContext に新しいアラートを追加する別の関数:
foreach (var item in items)
{
if (item.CurrentQuantity < item.MinQuantity)
{
using (var db = new MyDbContext())
{
db.Alerts.Add(new Alert(){StockItem = item, Message = "Low Quantity"});
db.SaveChanges();
}
}
}
問題は次のとおりです: アラートが保存されると、新しい在庫アイテム (別の ID を持つ) がデータベースに追加されますが、それは既に存在します! 解決策はありますか?