我有一个存储“标签”的表,如下所示:
ProductTags
TagID PK
Name nvarchar(50) [not null]
和这样的M2M地图表:
ProductTagMap
ProductID PK
TagID PK
现在假设我从一个产品中移除了一个标签关系(或所有这些关系),如下所示:
// get our Product we are working on...
Product product = dataContext.Products.Where(p > p.ProductID = 1);
// this remove the link between the product and its tags
dataContext.ProductTagMaps.DeleteAllOnSubmit(product.ProductTagMaps);
//*** If these product-specific Tag/s is/are no longer used ***/
//*** by any other Products I'd like to delete them ***/
//*** How can this be done here? ***/
dataContext.SubmitChanges();
如果这些标签(与特定产品相关)不再与我希望删除的任何产品相关。 如何在上面的代码中完成(参见注释)?
答案 0 :(得分:1)
由于这需要检查其他记录中的其他映射,您必须进行查询以检查孤儿:
var tags = from t in dataContext.Tags
where t.ProductTags.Count() == 0
select t;
dataContext.Tags.DeleteAllOnSubmit(tags);
这为您提供了可以删除的标签。