当实体的属性发生变化时,进行更新的正确方法是什么?例如,我有一个名为 Application 的实体。应用程序有一个属性 List<TaskBases>。运行我的应用程序时,应用程序的任务库为零。我只需要知道当用户向其中添加 TaskBase 时如何保存此列表。
Save() 方法的第一行是新的。我尝试了它,因为我在研究时发现了它。
public void Save(Application application)
{
// This line didn't work. See error below this code snippet.
this.Database.Entry(application).Property(app => app.Tasks).IsModified = true;
this.SaveChanges<Application>(application);
}
protected void SaveChanges<T>(T entity) where T : EntityBase
{
this.Database.Entry<T>(entity).State = GetState(entity);
this.Database.SaveChanges();
}
我收到此错误:“'Application' 类型的属性 'Tasks' 不是原始或复杂属性。Property 方法只能与原始或复杂属性一起使用。请使用 Reference 或 Collection 方法。”
因此,我尝试使用 Reference 和 Collection,但我在智能感知中没有看到任何对我有帮助的东西。
注意:当我第一次尝试在 Save() 中没有第一行的情况下进行保存时,TaskBases 列表中的项目没有出现在数据库中。
我有一种感觉,我让这变得比它需要的更难。我有一个实体,用户将另一个实体添加到它,作为列表的一部分,我希望保存它。我错过了什么?这应该怎么做?
编辑:
当我将 Save() 方法更改为此时,它起作用了:
public void Save(Application application)
{
foreach (TaskBase taskBase in application.Tasks)
{
this.Database.Entry<TaskBase>(taskBase).State = GetState(taskBase);
}
this.SaveChanges<Application>(application);
}
那是必须要做的吗?那是正确的方法吗?