【问题标题】:Linq to Entities - Delete from a link / junction tableLinq to Entities - 从链接/联结表中删除
【发布时间】:2009-09-30 14:36:36
【问题描述】:

我正在构建一个电子商务网站,其中包含多个类别的产品。因此,我有一个 Products 表、一个 Categories 表和一个 ProdCat 链接/联结表,其中包含所有 productId / CategoryId 组合。

使用 Linq To Entities(我今天第一次使用)执行更新时,我不知所措。我首先需要删除给定产品 ID 的所有条目,然后插入所有相关详细信息。我想我已经插入了,但谁能给我一个如何删除的例子?

我在网上搜索了一下,似乎 Linq to Entities 与 Linq To SQL 相比被认为是“前进的道路”,但它似乎不像 Linq To Sql 那样“容易”学习。

感谢任何帮助。

谢谢。

【问题讨论】:

    标签: linq-to-entities


    【解决方案1】:

    我今天在传感器、sensorGroups 和在两者之间创建多对多关系的联结表遇到了类似的问题。我想出的解决方案是:

    var delGroup = db.SensorGroups.Single(g => g.GroupId == groupId);
    
    foreach (var sensor in delGroup.Sensors.ToList())
    {
        delGroup.Sensors.Remove(sensor);
    }
    
    db.SaveChanges();
    

    【讨论】:

      【解决方案2】:

      您不能在 LINQ-to-Anything 中删除。不在 LINQ to SQL 中,不在 LINQ to Entities 中,也不在 LINQ to Objects 中。

      要在 EF 中删除,您可以:

      Context.DeleteObject(someObject);
      

      所以要按 ID 删除所有内容,您可以这样做:

      var q = from entry in Context.SomeEntitySet
              where entry.Product.Id == someId
              select entry;
      foreach (var entry in q)
      {
          Context.DeleteObject(entry);
      }
      Context.SaveChanges();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-06
        • 1970-01-01
        相关资源
        最近更新 更多