我有一个名为 account 的复杂类型,其中包含许可证列表。许可证又包含一个域列表(域是一个简单的 id + url 字符串)。
在我的存储库中,我有这段代码
public void SaveLicense(int accountId, License item)
{
Account account = GetById(accountId);
if (account == null)
{
return;
}
if (item.Id == 0)
{
account.Licenses.Add(item);
}
else
{
ActiveContext.Entry(item).State = EntityState.Modified;
}
ActiveContext.SaveChanges();
}
当我尝试保存更新的许可证(带有修改的域)时,会发生直接属于许可证的字符串得到更新就好了。
但是没有域得到更新。
我应该提到我所做的是允许用户在用户界面中添加和删除域。任何新域的 id=0 和任何已删除的域都不在列表中。
所以我想要的是
- 列表和数据库中的任何域且未更改 - 没有任何反应
- 列表和数据库中的任何域,但在列表中已更改 - 数据库已更新
- 任何 id=0 的域都应该插入(添加)到数据库中
- 任何不在列表中但在数据库中的域都应该被删除
我玩了一些但没有成功,但我偷偷地怀疑我在更大的范围内做错了什么,所以如果我在设计方面误解了某些东西,或者只是错过了一些东西,我希望得到提示。