【发布时间】:2014-11-30 10:59:45
【问题描述】:
在我的应用程序中,一个实体关系如下图所示。
就这么简单
Qustion 有 TransQuestions,问题可以分为很多 子类别
我必须在应用程序的整个生命周期中添加/更新删除 DETACHED 问题。添加和删除很简单。但是对于更新,我用谷歌搜索并得到了以下 3 个选项。
1 检索旧实体,将所有属性一一复制,并从更新的实体复制到旧实体,然后再次保存旧实体。我实施了这种方法,它运行良好,但它是变革管理的钟声。
2 附加DataSource.Questions.Attach(Entity); 之类的实体,然后通过DataSource.Entry(Entity).State = System.Data.EntityState.Modified; 修改其状态。
3 使用 SetValues 方法,示例代码如下。
var oldData = DataSource.Questions.Find(Entity.QuestionID);
if (oldData != null)
{
DataSource.Entry(oldData).CurrentValues.SetValues(Entity);
DataSource.SaveChanges();
}
我测试了第二种方法,它适用于父实体,然后我还更改了子实体的状态,它也运行良好。
问题是我必须在许多情况下更新对象,例如问题将附加新的子类别或将更多 TransQuestions 添加到问题中。在这些场景中,我们也可能有 add 子类别操作。
以下是3次修改所需的场景
如有任何问题,
1 标记为 ModifiedBy = 5,
为说 法语 语言(LanguageID = 'French')添加了 2 个 TransQuestions
3 已存在 English (LanguageID = 'English)' 的 TransQuestions 中的 Option2 已修改。
我该怎么办?
提前致谢。
【问题讨论】:
标签: c# entity-framework