如何在Controller中设置数据库表FoodId与MenuItemId两列值保持一致
实现两列值同步的解决方案
1. 新提交数据自动同步
你只需要在POST请求的Create方法中添加一行赋值逻辑即可,在验证通过、写入数据库之前,直接把MenuItemId赋值为FoodId的取值:
修改后的代码片段如下:
if (ModelState.IsValid) { var userId = _userManager.GetUserId(HttpContext.User); reviews.UserId = userId; reviews.Date = DateTime.Now; // 新增这行代码实现两列值同步 reviews.MenuItemId = reviews.FoodId; _context.Add(reviews); await _context.SaveChangesAsync(); return RedirectToAction("Index"); }
这样后续所有新创建的评论数据,MenuItemId都会和FoodId保持一致。
2. 存量历史数据更新
目前表里已经存在的MenuItemId为NULL的数据,你可以直接执行一次SQL语句完成批量更新:
UPDATE Reviews SET MenuItemId = FoodId WHERE MenuItemId IS NULL;
如果你不想直接操作数据库,也可以临时写一个EF的批量更新接口,执行一次后删除即可。
如果后续你需要让两个字段独立赋值,删掉新增的那行赋值代码即可恢复原有逻辑。
内容的提问来源于stack exchange,提问作者Jackson Parker
相关产品推荐
相关产品推荐

