c# - 在一个表中创建记录将更新另一个表中的现有记录 ASP.NET Core MVC
问题描述
我是 ASP.NET Core MVC 的新手,我想知道如何在一个表中创建新记录并更新另一个表中的现有记录,例如我有两个表Asset Master
,Assigning 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
表中创建新记录
解决方案
试试这个
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));
推荐阅读
- c++ - 自定义#pragma 消息警告将实例化跟踪
- c - 如何将合并排序接受数组转换为结构数组
- reactjs - UseMutation 和 RefetchQueries:避免多次调用 react-apollo 的 api
- java - E/RecyclerView:没有附加适配器,跳过布局
- android - Android 找不到参数的方法 protobuf()
- loops - 为什么这里没有识别到这个变量
- r - R:与前一组相比,计算新观察的数量
- java - 库 .so 文件放置在 libs 中的 armeabi、armeabi-v7a 和 arm64-v8a 文件夹中,但应用程序因 java.lang.UnsatisfiedLinkError 而崩溃
- r - 如何在R中找到(1:n)数字列表的GCD
- java - 在二维多边形内使用 Minkowski 进行配置空间计算