Как ссылаться на свойства объекта строки внешнего ключа на странице ASP.NET Core ⇐ C#
Как ссылаться на свойства объекта строки внешнего ключа на странице ASP.NET Core
Я новичок в ASP.NET Core, и мне трудно понять, как ссылаться на данные внешнего ключа, предоставляемые хранимой процедурой, заполняющей IEnumerable модели, содержащей внешние ключи и соответствующие элементы для объектов внешней модели.
Извините, если это не совсем правильная терминология, но я постараюсь предоставить соответствующий сценарий. Я вижу сам идентификатор внешнего ключа, но соответствующий внешний объект отображается как нулевой.
Модель включает следующую ссылку на внешний ключ:
[Обязательно] [ForeignKey("RequestingUser")] общественная строка RequestingUserId {get; набор; } общедоступная виртуальная модель UserViewModel? RequestingUser {получить; набор; } На странице Razor есть таблица со следующей информацией:
@foreach (var pendingPocItem в Model.PendingPOCRequests) { @pendingPocItem.RequestingUser.FirstName @pendingPocItem.Request_Time Кнопка «Утвердить» Кнопка «Отклонить» } Однако, хотя @pendingPocItem.Request_Time извлекается нормально (как и pendingPocItem.RequestingUserId), pendingPocItem.RequestingUser имеет значение null, поэтому хотя intellisense позволяет мне указать его свойства на странице бритвы, я получаю исключение нулевой ссылки.
Я уверен, что мне здесь не хватает чего-то основного, но я не уверен, что именно.
Мой код бритвы:
[BindProperties] публичный класс РекомендацииМодель: PageModel { частный только для чтения UserManager _userManager; защищенный PendingPOCService _pendingPocService; общественный IEnumerable PendingPOCRequests {get; набор; } общедоступная модель рекомендаций (UserManager userManager, PendingPOCService pendingPocService) { _userManager = userManager; _pendingPocService = pendingPocService; } общедоступная асинхронная задача OnGetAsync() { вар пользователь = HttpContext.User; вар userId = _userManager.GetUserId (пользователь); PendingPOCRequests = (IEnumerable)await _pendingPocService.GetSettingsAsync(userId); } } Моя услуга включает в себя следующее:
public PendingPOCService (контекст T_DbContext, UserManager userManager, IHttpContextAccessor httpContextAccessor) { _контекст = контекст; _userManager = userManager; _httpContextAccessor = httpContextAccessor; _context.Database.EnsureCreated(); } общедоступная асинхронная задача GetSettingsAsync (идентификатор строки) { вар пользователь = _httpContextAccessor.HttpContext?.User; UserId = _userManager.GetUserId(пользователь); Код метки = "XXXX01"; //на данный момент жестко запрограммировано List paramList = new() { // Создаем параметры новый SqlParameter { ИмяПараметра = "@UserId", Значение = UserId}, новый SqlParameter {Имя параметра = "@LCode", Значение = LCode} }; ждут _context.Database.OpenConnectionAsync(); var result = await Task.Run(() => _context.PendingPocDbSet .FromSqlRaw(@"EXEC GetRequests_SP @UserId, @LCode", paramList.ToArray()).ToListAsync()); вернуть результат; }
Я новичок в ASP.NET Core, и мне трудно понять, как ссылаться на данные внешнего ключа, предоставляемые хранимой процедурой, заполняющей IEnumerable модели, содержащей внешние ключи и соответствующие элементы для объектов внешней модели.
Извините, если это не совсем правильная терминология, но я постараюсь предоставить соответствующий сценарий. Я вижу сам идентификатор внешнего ключа, но соответствующий внешний объект отображается как нулевой.
Модель включает следующую ссылку на внешний ключ:
[Обязательно] [ForeignKey("RequestingUser")] общественная строка RequestingUserId {get; набор; } общедоступная виртуальная модель UserViewModel? RequestingUser {получить; набор; } На странице Razor есть таблица со следующей информацией:
@foreach (var pendingPocItem в Model.PendingPOCRequests) { @pendingPocItem.RequestingUser.FirstName @pendingPocItem.Request_Time Кнопка «Утвердить» Кнопка «Отклонить» } Однако, хотя @pendingPocItem.Request_Time извлекается нормально (как и pendingPocItem.RequestingUserId), pendingPocItem.RequestingUser имеет значение null, поэтому хотя intellisense позволяет мне указать его свойства на странице бритвы, я получаю исключение нулевой ссылки.
Я уверен, что мне здесь не хватает чего-то основного, но я не уверен, что именно.
Мой код бритвы:
[BindProperties] публичный класс РекомендацииМодель: PageModel { частный только для чтения UserManager _userManager; защищенный PendingPOCService _pendingPocService; общественный IEnumerable PendingPOCRequests {get; набор; } общедоступная модель рекомендаций (UserManager userManager, PendingPOCService pendingPocService) { _userManager = userManager; _pendingPocService = pendingPocService; } общедоступная асинхронная задача OnGetAsync() { вар пользователь = HttpContext.User; вар userId = _userManager.GetUserId (пользователь); PendingPOCRequests = (IEnumerable)await _pendingPocService.GetSettingsAsync(userId); } } Моя услуга включает в себя следующее:
public PendingPOCService (контекст T_DbContext, UserManager userManager, IHttpContextAccessor httpContextAccessor) { _контекст = контекст; _userManager = userManager; _httpContextAccessor = httpContextAccessor; _context.Database.EnsureCreated(); } общедоступная асинхронная задача GetSettingsAsync (идентификатор строки) { вар пользователь = _httpContextAccessor.HttpContext?.User; UserId = _userManager.GetUserId(пользователь); Код метки = "XXXX01"; //на данный момент жестко запрограммировано List paramList = new() { // Создаем параметры новый SqlParameter { ИмяПараметра = "@UserId", Значение = UserId}, новый SqlParameter {Имя параметра = "@LCode", Значение = LCode} }; ждут _context.Database.OpenConnectionAsync(); var result = await Task.Run(() => _context.PendingPocDbSet .FromSqlRaw(@"EXEC GetRequests_SP @UserId, @LCode", paramList.ToArray()).ToListAsync()); вернуть результат; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как ссылаться на точечное значение свойства в атрибуте свойства класса в PHP 8.4?
Anonymous » » в форуме Php - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-