Entity framework EF中双向添加对象之间是否存在差异

Entity framework EF中双向添加对象之间是否存在差异,entity-framework,Entity Framework,有两种方法可以将新对象添加到DBSet中 代码示例: ` ` 问题是:这些方法之间有什么不同。我们应该使用哪种方式?以下是MSDN中有关您的问题的详细信息: 可以通过调用DbSet上的Add方法将新实体添加到上下文中。这将使实体处于添加状态,这意味着下次调用SaveChanges时它将被插入到数据库中。例如: using (var context = new BloggingContext()) { var blog = new Blog { Name = "ADO.NET Blog

有两种方法可以将新对象添加到DBSet中 代码示例: `

`


问题是:这些方法之间有什么不同。我们应该使用哪种方式?

以下是MSDN中有关您的问题的详细信息:

可以通过调用DbSet上的Add方法将新实体添加到上下文中。这将使实体处于添加状态,这意味着下次调用SaveChanges时它将被插入到数据库中。例如:

using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Blogs.Add(blog); 
    context.SaveChanges(); 
}
using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Entry(blog).State = EntityState.Added; 
    context.SaveChanges(); 
}
将新实体添加到上下文的另一种方法是将其状态更改为Added。例如:

using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Blogs.Add(blog); 
    context.SaveChanges(); 
}
using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Entry(blog).State = EntityState.Added; 
    context.SaveChanges(); 
}
最后,您可以将一个新实体连接到另一个已经被跟踪的实体,从而将其添加到上下文中。这可以通过将新实体添加到另一实体的集合导航属性,或者通过将另一实体的引用导航属性设置为指向新实体来实现。例如:

using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Blogs.Add(blog); 
    context.SaveChanges(); 
}
using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Entry(blog).State = EntityState.Added; 
    context.SaveChanges(); 
}
有关更多信息,请访问以下链接