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

时间:2014-06-05 03:13:18

标签: entity-framework

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

var entity= new EntityClass()
            {
                Id = 1,
                Name = "Name"
            };
//Way 1
            _context.Entry(entity).State = EntityState.Added;
            _context.SaveChanges();`

//Way 2
            _context.EntityClasses.Add(entity);
            _context.SaveChanges();

`

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

1 个答案:

答案 0 :(得分:2)

以下是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(); 
}

最后,您可以通过将新实体连接到已经被跟踪的另一个实体来将新实体添加到上下文中。这可以通过将新实体添加到另一个实体的集合导航属性中,或者通过将另一个实体的引用导航属性设置为指向新实体。例如:

有关详细信息,请访问以下链接http://msdn.microsoft.com/en-us/data/jj592676.aspx