2014-06-05 56 views
2

有添加對象雙向添加新的對象爲DBSet 代碼示例: `有差異beetween雙向的EF

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(); 

`

的問題是:什麼這些方式之間的不同。我們應該用哪種方式?

回答

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