Невозможно отобразить имя из привязанной / модели отношений в asp.core - PullRequest
0 голосов
/ 10 января 2019

после моего предыдущего вопроса ( ядро ​​asp.net создает / обновляет иностранный ключ ), я хочу отобразить название аптеки из моей модели Todo. На самом деле используется следующий код:

public class Todo
    {
        public Pharmacy Pharmacy { get; set; }
    }

    public class Pharmacy
        {
            [Key]
            public int PharmacyID { get; set; }

            public string Name { get; set; }
        }

соединитель для моей коробки выбора в мою форму создания / редактирования:

public class PharmacynamePageModel : PageModel
    {
        [BindProperty]
        public int SelectedPharmacy { get; set; }

        public SelectList PharmacyNameSL { get; set; }

        public void PopulatePharmacysDropDownList(ApplicationDbContext _context, object selectedPharmacy = null)
        {
            var query = (from p in _context.Pharmacy orderby p.Name select p).ToList();

            PharmacyNameSL = new SelectList(query, "PharmacyID", "Name", selectedPharmacy);
        }
    }

и в мой список (index.cshtml):

@foreach (var item in Model.Todo)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.OwnerID)
                </td>
                <td>
                @Html.DisplayFor(modelItem => item.Pharmacy.Name)
            </td>
       }

Я безуспешно пробовал следующий вариант:

  • item.Pharmacy
  • item.Pharmacy.PharmacyID (но я хочу напечатать имя)

Я управлял с помощью SQLServer Management Studio, и моя колонка «PharmacyID» содержит значение после создания или редактирования данных.

Надеюсь, вы можете мне помочь;)

Спасибо за аванс!

1 Ответ

0 голосов
/ 11 января 2019

Entity Framework Core позволяет использовать свойства навигации в вашей модели для загрузки связанных объектов. Проверьте, используете ли вы метод Include для указания связанных данных, которые будут включены в результаты запроса, как в примере ниже

 public async Task OnGetAsync()
    {
        Todo = await _context.Todo
                              .Include(t => t.Pharmacy).ToListAsync();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...