是否可以引用另一个表,以便将员工记录与用户记录相关联?

时间:2019-06-07 05:55:36

标签: asp.net-mvc asp.net-identity

我正在尝试构建一个Web应用程序,允许用户查看公司政策,程序,新闻通讯和他们自己的员工信息。

我的员工表包含所有员工信息(以及相关的查找表,例如前缀,员工级别等)

我的应用程序使用asp身份进行登录,但是我希望能够从人员表中返回仅与该特定用户相关的信息。

我知道可以将ASP.net用户表扩展为包括自定义字段,但这并不符合我的目标,因为职员表是由管理团队在基于桌面的应用程序中使用的。

1 个答案:

答案 0 :(得分:0)

将一个字段添加到Staff表的UserId中,例如ALTER TABLE Staff ADD UserId NVARCHAR(256) DEFAULT NULL;

(可选)您将引用AspnetUsers表。

更新其他表中的Staff表行以将UserId值设置为相关的用户ID(手动或创建操作以实现此目的)

然后,在您的控制器中,您可以从表中选择通讯,员工的用户ID等于已连接User.Identity.Id。例如

var news = context.Newsletters.Where(n=>n.Staff.UserId==User.Identity.Id);
var infos = context.StaffInfos.Where(si=>si.Staff.UserId==User.Identity.Id);

如果表之间没有关联,则需要执行以下操作

var employee = context.Staffs.FirstOrDefault(s => s.UserId == User.Identity.Id);
if(employee != null) {
    var infos = context.StaffInfos.Where(si=>si.IdEmployee==employee.EmployeeId);
    return View(infos);
} else {
    return Content("You don't have an account associated to your staff info...");
}

请用您的字段名称替换这些查询中的字段。