2012-06-15 124 views
2

我有db方案,其中Product表與Color表有許多關係。我使用的EF和創建POCO對象: 如何刪除所有多對多關係而無需在實體框架中加載相關實體?

public class Product 
{ 
    public Guid Id {get;set;} 
    public ICollection<Color> Colors {get;set;} 
} 

public class Color 
{ 
    public Guid Id {get;set;} 
    public ICollection<Product> Products {get;set;} 
} 

在許多情況下,有必要刪除相關產品的所有顏色,並設置新的顏色。所以我想刪除所有多對多的關係,但是完全知道相關顏色的id。有沒有可能刪除他們沒有額外的查詢數據庫?我知道我可以編寫存儲過程,它將刪除指定產品的所有與顏色的關係,但通過實體框架找到一般方法會更好。

+0

只是請點擊此鏈接: [http://stackoverflow.com/questions/937140/delete-an-object-and-all-其相關實體在實體框架] [1] 乾杯! –

+0

我不想刪除產品或顏色本身,我只想刪除特定產品和所有顏色之間的所有關係。所以我不能使用級聯刪除,因爲沒有刪除相關實體,只能刪除關係。 – HoberMellow

+0

你可以將你的實體(產品或顏色)存儲在一個臨時變量中,在刪除之後,插入不同的id.i認爲你找不到比這更有效的方法。 –

回答

2

如果您不知道顏色鍵,您不能先刪除它們 - EF會逐個刪除記錄,因此需要知道要刪除哪條記錄。

的直線前進選項執行SQL DELETE直接:

dbContext.Database 
     .ExecuteSqlCommand("DELETE FROM dbo.ProductColors WHERE ProductId = @Id", product.Id);