实体框架,与一个SaveChanges

时间:2016-05-19 13:05:05

标签: c# entity-framework

我会简化我的问题。我有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()

1 个答案:

答案 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