我会简化我的问题。我有1个具有这些属性的类: ID IdFollower 其他一些专栏......
然后我有ID = 1的现有实体。我想创建另一个实体并将IdFollower设置为现有的实体,其中ID为新的。
是否可以只使用一个SaveChanges
。我试过但没有运气。例如:
var existing = context.class.Find(1);
var nextInLine = new class(){....}
context.class.Add(nextInLine);
existing.IdFollower = nextInLine.Id
context.SaveChanges();
我希望EF知道nextInLine是新记录(其状态为Added
)并且不会在现有实体的IdFollower
中写入“0”,而是首先保存nextInLine,获取其ID并写入在现有实体中的ID,然后保存现有实体。
现在我正在使用它,所以我在SaveChanges()
之后只有一个context.class.Add(nextInLine)
。所以最后它看起来像:
var nextInLine = new class(){....}
context.class.Add(nextInLine);
context.SaveChanges();
existing.IdFollower = nextInLine.Id
context.SaveChanges();
到目前为止,我已经使用了另一个ORM,但我想转向EF。这个“问题”并不存在于ORM中。
是否可以使用1 SaveChanges()
。
答案 0 :(得分:0)
是的,但不是设置FK属性,而是通过existing
实体中的导航属性设置关系:
var existing = context.class.Find(1);
var nextInLine = new Follower(){....};
context.class.Add(nextInLine);
existing.Follower = nextInLine;
context.SaveChanges();
当您需要将实体与已保留在数据库中的另一个现有实体相关联时,请设置FK属性。 如果您需要更多信息,请查看此link。