设置状态添加了对象图

对象图 (相关实体的集合) 的状态设置为 Added 与将单个实体设置为 Added(参见此示例 )不同。

在这个例子中,我们存储了行星及其卫星:

类模特

public class Planet
{
    public Planet()
    {
        Moons = new HashSet<Moon>();
    }
    public int ID { get; set; }
    public string Name { get; set; }
    public ICollection<Moon> Moons { get; set; }
}

public class Moon
{
    public int ID { get; set; }
    public int PlanetID { get; set; }
    public string Name { get; set; }
}

上下文

public class PlanetDb : DbContext
{
    public property DbSet<Planet> Planets { get; set; }
}

我们使用此上下文的实例来添加行星及其卫星:

var mars = new Planet { Name = "Mars" };
mars.Moons.Add(new Moon { Name = "Phobos" });
mars.Moons.Add(new Moon { Name = "Deimos" });

context.Planets.Add(mars);

Console.WriteLine(context.Entry(mars).State);
Console.WriteLine(context.Entry(mars.Moons.First()).State);

输出:

Added
Added

我们在这里看到的是,添加一个 Planet 也将月亮的状态设置为 Added

当将实体的状态设置为 Added 时,其导航属性中的所有实体(导航到其他实体的属性,如 Planet.Moons)也标记为 Added除非它们已附加到上下文