我正在制作一个调查程序,其中包含从数据库中作为实体提取的问题列表。在调查过程中,实体的属性可能会被编辑,但我不希望这些更改保留到数据库中。因此,我将问题加载到 中后分离它们dbcontext
并通过字典访问它们。
当我尝试将答案保存到数据库时出现问题。由于答案实体与问题实体(已分离)相关,因此将一个全新的问题实体添加到数据库中。我不确定为什么会发生这种情况,因为添加的答案实体包含分离实体的正确 ID(当我在调试器中查看它时)。但是,在保存更改后,它会更新为新创建的重复实体的 ID。
有没有办法阻止这种行为?或者,是否有一种方法可以对实体进行更改并且即使在SaveChanges
上下文中调用以将答案或日志条目写入数据库时也不让它们持久保存到数据库中?
这是加载的代码,然后分离问题(项目):
public FixedLengthBlockElementRuntime(FixedLengthBlock block, RuntimeContext context) : base(block, context)
{
this._items = ((FixedLengthBlock)this.Element).ItemBank.Items.OfType<FixedLengthItem>().ToDictionary(x => x.ItemName, x => x);
foreach(FixedLengthItem fixedLengthItem in this._items.Values)
{
this.Context.DetachEntity(fixedLengthItem);
}
}
这是添加重复条目的代码:
public void SetResponse(Response response)
{
response.Session = this.Session;
this.DbContext.Responses.AddObject(response);
this.DbContext.SaveChanges();
}
请注意,在保存更改之前,响应具有正确的 ItemId。