Можно ли ссылаться на другую таблицу, чтобы запись сотрудника была связана с записью пользователя? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь создать веб-приложение, которое позволяет пользователям просматривать политики, процедуры, информационные бюллетени компании и информацию о своих сотрудниках.

У меня есть таблица персонала, которая содержит всю информацию о сотрудниках (вместе с соответствующимитаблицы поиска для таких вещей, как префикс, оценка персонала и т. д.)

мое приложение использует asp-identity для функции входа в систему, но я хочу иметь возможность возвращать информацию из таблицы персонала, которая относится только к этому конкретному пользователю.

Я знаю, что можно расширить таблицу пользователей ASP.net, включив в нее настраиваемые поля, но это не совсем соответствует моей цели, поскольку таблица персонала используется командой администратора в настольном приложении.

1 Ответ

0 голосов
/ 07 июня 2019

Добавьте поле к вашей таблице персонала UserId, например ALTER TABLE Staff ADD UserId NVARCHAR(256) DEFAULT NULL;

При желании вы можете ссылаться на таблицу AspnetUsers.

Обновите строки таблицы Staff в других, чтобы установить значения UserId для идентификаторов связанных пользователей (вручную или создать для этого действие)

Затем, в вашем контроллере, вы можете выбрать рассылку из таблицы, где идентификатор пользователя сотрудника равен подключен 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...");
}

Пожалуйста, замените поля в этих запросах именами ваших полей.

...