首页 > 解决方案 > 在一个表中创建记录将更新另一个表中的现有记录 ASP.NET Core MVC

问题描述

我是 ASP.NET Core MVC 的新手,我想知道如何在一个表中创建新记录并更新另一个表中的现有记录,例如我有两个表Asset MasterAssigning Asset因此在Assigning Asset使用员工姓名创建记录时(例如。 Hana)和资产代码(例如 Lap001)Asset Master如果资产代码存在,则应在表中搜索更新员工姓名如果不抛出错误我已经搜索了解决方案但找不到答案

AssigningAssetModel班级:

public class AssigningAssetModel
{
    [Key]
    public int ID { get; set; }

    [Required(ErrorMessage = "Enter Employee Name")]
    public string Employee Name{ get; set; }

    [Required(ErrorMessage = "Enter AssetCode")]
    public string AssetCode { get; set; }
}

AssetMasterModel班级:

public class AssetMasterModel
{
    [Key]
    public int ID { get ;set; }

    public string AssetCode { get; set; }

    [Required]
    public string EmployeeName{ get; set; }
}

AssigningAsset控制器

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<iactionresult> Create(int id [Bind("ID,EmployeeName,AssetCode")] AssigningAssetModel assigningAssetModel)
{
        if (id != assigningAssetModel.ID)
        {
            return NotFound();
        }

        if (ModelState.IsValid)
        {
            try
            {
                _context.Update(assigningAssetModel);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AssigningAssetModelExists(assigningAssetModel.ID))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return RedirectToAction(nameof(Index));
        }

        return View(assigningAssetModel);
}

如何通过AssetCode这里以便我可以更新AssetMaster表中的现有记录?

请注意,如果未找到资产代码,则不应在AssetMaster表中创建新记录

标签: c#asp.net-core.net-coreasp.net-core-mvc

解决方案


试试这个

if (id != assigningAssetModel.ID) return NotFound();

 if (!ModelState.IsValid) return View(assigningAssetModel);

 try
   {
              
 var masterExist= await _context.Set<AssetMasterModel>().FirstOrDefaultAsync( i=>i.AssetCode ==assigningAssetModel.AssetCode );

 if(masterExist==null) return NotFound();

  if( masterExist.EmployeeName!=assigningAssetModel.EmployeeName)
   {
    masterExist.EmployeeName=assigningAssetModel.EmployeeName;
     _context.Entry(masterExist).State=EntityState.Modified;
    }
_context.Add(assigningAssetModel);
await _context.SaveChangesAsync();
   
  _context.Update(assigningAssetModel);
    await _context.SaveChangesAsync();
  }
 catch ( Exception ex)
       {
 return  BadRequest(ex.Message);
        }

   return RedirectToAction(nameof(Index));

推荐阅读