Entity framework EF中双向添加对象之间是否存在差异
有两种方法可以将新对象添加到DBSet中 代码示例: ` `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
问题是:这些方法之间有什么不同。我们应该使用哪种方式?以下是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();
}
有关更多信息,请访问以下链接