SalesItemNecessities
时会创建
Activity
。但是,更新父级 SalesItemNecessities
时,Activity
不会更新。大家有什么建议吗?
我有两个型号:
public class Activity
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public List<SalesItemNecessity>? SalesItemNecessities { get; set; }
}
public class SalesItemNecessity
{
[Key]
public int Id { get; set; }
public SalesItem SalesItem { get; set; }
public int SalesItemId { get; set; }
public int Amount { get; set; }
public Activity Activity { get; set; }
public int ActivityId { get; set; }
}
当我更改
activity
的数据时,我还可以添加、更改或删除SalesItemNEcessities
。当我点击“保存”时,我希望更新我的 activity
,但是 也 我的 SalesItemNecessities
。然而,后者不会发生。
public async Task<bool> UpdateAsync(Activity objActivity)
{
try
{
using (var _db = _factory.CreateDbContext())
{
_db.Entry(objActivity).State = EntityState.Modified;
_db.Set<Activity>().Update(objActivity);
await _db.SaveChangesAsync();
}
return true;
}
catch (Exception ex)
{
return false;
}
}
当我点击保存时,我的
Activity
的数据在数据库中更新(例如名称),但我的 SalesItemsNecessity
未更新。添加的项目不会创建,更改的项目不会更新,删除的项目不会删除。
我发现这种行为很奇怪,因为我可以使用下面的代码添加一个新的
activity
和 SalesItemNecessity
。任何 SalesItemNecessity
都会与刚刚创建的活动 EF Core 的 ActivityId
添加到数据库中。
public async Task<bool> AddAsync(Activity objActivity)
{
try
{
using (var _db = _factory.CreateDbContext())
{
_db.Activities.Add(objActivity);
await _db.SaveChangesAsync();
}
return true;
}
catch (Exception ex)
{
return false;
}
}
任何人都知道为什么我无法以这种方式更新/删除我的
SalesItemNecessities
,但我可以在创建新的Activity
时添加它们。先谢谢了!
如果创建 DbContext,将 objActivity 实体状态设置为Modified,然后更新 objActivity,则只有它会被更新,因为 SalesItemNecessities 集合仍然保持在 Unchanged 状态。
正确的做法是: