簡體   English   中英

在使用 EF Core 更新時檢查重復項?

[英]Checking for duplicates on update with EF Core?

我目前正在制作一個具有獨特列的應用程序

public class Category
{
    public string ID { get; set; }
    public string Name { get; set; }
}

其中 Name 在我的 DBContext.OnModelCreating() 方法中被聲明為唯一的。

這是按預期工作的。

使用插入,我可以使用以下內容檢查重復項:

if(_context.Category.Any(c => c.Name == category.Name))
{
     ViewData["Message"] = "A category with that name already exist";
     return View();
}

現在我的問題是,在編輯此實體時,如何檢查編輯名稱是否存在於編輯名稱以匹配數據庫中另一個現有行的情況?

為了更好地解釋這一點,假設我的表中有 2 個條目。

  • A: ID = 1, Name = "褲子"
  • B: ID = 2, Name = "襯衫"

如果我隨后嘗試將 As Name 重命名為“Shirts”,則會出現重復錯誤。 我如何處理這個用例?

我認為您可以在使用額外檢查進行更新時執行相同的操作,以驗證要更新的名稱與現有名稱不同:

if(_context.Category.Any(c => c.Name == newNameAfterUpdate && c.Name != category.Name))
{
     ViewData["Message"] = "A category with that name already exist";
     return View();
}

暫無
暫無

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

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