我正在尝试向DB添加实体。一旦我添加它,我想分离它,所以我可以安全地操纵对象而不需要对DB进行任何更改。在调用context.SaveChanges()
之后,我执行以下操作来分离实体:
// save
context.Stories.Add(story);
// attach tags. They already exists in the database
foreach(var tag in story.Tags)
context.Entry(tag).State = System.Data.EntityState.Unchanged;
context.SaveChanges();
context.Entry(story).State = System.Data.EntityState.Detached;
但是,将实体状态更改为DETACHED将删除与my实体关联的所有相关实体。有办法阻止这个吗?
如果我不分离实体,我下次拨打context.SaveChanges()
时会将所有更改发送到数据库
谢谢!
答案 0 :(得分:0)
没有办法。这是EF的限制。您的选择是:
答案 1 :(得分:0)
我认为有两种方法可以解决这个问题:
AsNoTracking()
检索实体图,该图不会被更改的上下文跟踪。