C# LINQ到SQL-如果没有关系,则删除多对多
我有一个存储“标签”的表格,如下所示: M2M地图表格如下:C# LINQ到SQL-如果没有关系,则删除多对多,c#,asp.net,linq,linq-to-sql,C#,Asp.net,Linq,Linq To Sql,我有一个存储“标签”的表格,如下所示: 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 lin
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();
如果这些标签(与特定产品相关)不再与任何产品相关,我希望将其删除。
如何在上面的代码中做到这一点(请参见注释)?由于这需要检查其他记录中的其他映射,因此必须执行查询以检查孤立项:
var tags = from t in dataContext.Tags
where t.ProductTags.Count() == 0
select t;
dataContext.Tags.DeleteAllOnSubmit(tags);
这将为您提供可以删除的标记
var tags = from t in dataContext.Tags
where t.ProductTags.Count() == 0
select t;
dataContext.Tags.DeleteAllOnSubmit(tags);