【问题标题】:How to access id of one table in another table如何访问另一个表中的一个表的ID
【发布时间】:2022-01-16 06:00:24
【问题描述】:

我如何访问分配到这家商店的员工。删除 Store 时;我想将员工可用性标志更改为真。 目前,我的 staffId 有问题!

 public async Task<IActionResult> DeleteConfirmed(int eventId)
  {
        var @store= await _context.Stores.FindAsync(eventId);
       
        _context.Stores.Remove(@store);

        
        //make staff available
        var staff = await _context.Staffs.FindAsync(staffId);
        staff.IsAvailable = true;

        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }

【问题讨论】:

  • 请提供所有表类(Event、Store、Staff、Staffing 等?)的代码,否则无法为您提供帮助。
  • 谢谢 Flood,它已排序。只是缺少“ThenInclude”:Include(e => e.StaffingCollection) .ThenInclude(s => s.Staff) .Where(e => e.StoreId == id)

标签: asp.net asp.net-core model-view-controller


【解决方案1】:

你没有定义staffId - 当然你会遇到问题!

最简单的就是有这样的东西:

var staffs = await _context.Staffs.Where(s => s.storeId == id).Select(s => s).ToListAsync();
foreach(var employee in staffs) {
   employee.IsAvailable = true;
}

Select 只是为了清楚起见;你不需要它

【讨论】:

  • s.storeId 报错,因为 Staffs 表没有 storeId!
  • 好的。和? StoresStaffs 有一对多的关系吗?如果 yesStaffs 必须具有 Store 的 id(在关系数据库中称为外键)。那一栏叫什么名字?在我使用storeId 的地方使用它。为了帮助自己,你必须做出小小的心理飞跃
  • 我有另一个名为 Staffing 的多对多关系表 - Staffing 只有 StaffId 和 StoreId 将 Store 与 Staff 连接起来。
  • 首先,你有什么桌子并不重要。重要的是您如何在对象模型中定义实体。表是根据您的对象模型通过迁移构建的。 第二,如果您在StaffStore 之间存在多对多关系-那么这是您完全错过的问题的一个非常重要的部分。假设您使用的是 .NET 5 或 6,我建议您从有关如何在 Entity Framework 中实现多对多关系的教程开始。祝你好运!
  • 我想我没有说清楚,我有一个 Store 表和 Staff 表 - 商店没有 StaffId,Staff 没有 SotreId。我有一个名为 Staffing 的表 - 它有两个 ID StoreId 和 StaffId,将 Store 与 Staff 连接起来。我正在使用 .Net 3。
猜你喜欢
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
相关资源
最近更新 更多