2013-03-21 119 views
0

超脫我有模型關係:實體框架,刪除實體如果從另一個實體

modelBuilder.Entity<Product>() 
     .HasMany(p => p.Properties) 
     .WithOptional(); 

對於examle,產品1有3個屬性,當我從產品中移除一個屬性(而不是從DB)我想在數據庫中刪除它,因爲它不再在任何地方使用。 我可以使用EF來做到這一點嗎?

回答

0

如果你的導航屬性不虛:

using(var db = new YourDbContext() 
{ 
var product = db.Products.FirstOrDefault(x => ...); 
product.Properties.RemoveAll(x => ...); 
db.SaveChanges(); 
} 

否則:

using(var db = new YourDbContext() 
{ 
var product = db.Products.Include("Properties").FirstOrDefault(x => ...); 
product.Properties.RemoveAll(x => ...); 
db.SaveChanges(); 
} 
+0

能EF自動做到這一點? – 2013-03-21 10:24:48

+1

當您從數據庫加載某些東西時,EF會在內存緩存中使用它保留所有關係的地方 - 稱爲對象跟蹤。它由默認打開。如果您從另一實體中定義的集合中刪除某個實體,則EF會注意到該實體。一旦您調用SaveChanges(),對象跟蹤中的所有更改都將保留在數據庫中。 – 2013-03-21 10:26:01