Sea*_*ean 4 entity entity-framework savechanges
我的超市模型包含一个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; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个函数,用一个DbContext获取所有StockItems:
using (var db = new MyDbContext())
{
return db.StockItems.ToList();
}
Run Code Online (Sandbox Code Playgroud)
另一个处理这些项目的函数,以及在另一个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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:当保存警报时,新的库存项目(具有不同的ID)将添加到数据库中,尽管它已经存在!任何解决方案
我认为你应该Attach首先使用stockitem.试试这个:
foreach (var item in items)
{
if (item.CurrentQuantity < item.MinQuantity)
{
using (var db = new MyDbContext())
{
db.StockItems.Attach(item);
db.Alerts.Add(new Alert {StockItem = item, Message = "Low Quantity"});
db.SaveChanges();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |