簡體   English   中英

Linq to Entities-如何使用內部聯接刪除許多記錄

[英]Linq to Entities - how to delete many records with inner join

我有兩節課:

public class Address
{
    [Key]
    public int ID_Address { get; set; }

    public string URL { get; set; }

和:

public class Category_Address
{
    [Key]
    public int ID_Category_Address { get; set; }



    public int ID_Category { get; set; }
    public virtual Category Category { get; set; }

    public int ID_Address { get; set; }
    public virtual Address Address { get; set; }

}

我想從URL = "anytextIwrite" Address表中選擇ID_Address ,並刪除Category_Address具有與我選擇的ID_Address相同的每個記錄。 我怎樣才能做到這一點 ?

現在,我以一些假設編寫了這篇文章。 顯然,您將要使用自己的數據庫名稱以及它們想要使用的任何組名稱,但這是一個相當簡單的LINQ語句和聯接,然后是應該執行所需操作的foreach。

var toDelete = from addr in addresses
   join cate in category_addresses on addr.id_address equals cate.id_address
   where addr.url = "anytextIwrite"
   select cate;

foreach (var record in toDelete) {
    db.category_addresses.DeleteOnSumbit(record);
}

如果仍處於活動狀態,請嘗試如下操作:

using (var context = new YourDbModel())
{
    var deletingAddresses = context.Category_Addresses
                                   .Where(ca => ca.Address.URL == "anytextIwrite")
                                   .Select(ca => ca.Address)
                                   .ToArray();
    foreach(var address in deletingAddresses)
    {
        context.Category_Addresses.Attach(address);
        var entry = context.Entry(address);
        entry.State = EntityState.Deleted;
    }
    context.SaveChanges();
}

它對我有用,所以也許您需要同樣的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM