У меня есть следующая модель:
public class Business
{
[Key]
public int BusinessId { get; set; }
public string Name {get;set;}
....
.....
....
[Display(Name = "Owner")]
public int OwnerId { get; set; }
[ForeignKey("OwnerId")]
public ApplicationUser Owner { get; set; }
}
В моем контроллере у меня есть следующая функция:
public async Task<IActionResult> Index()
{
return View(await _context.Business.ToListAsync());
}
и мой взгляд:
@model IEnumerable<ServiceProviderApp.Models.Business>
@{
ViewData["Title"] = "Business Engine";
}
.....
......
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
......
<td>
@Html.DisplayFor(modelItem => item.Owner.Name)
</td>
<td>
КакВы можете понять, что Владелец внутри Бизнеса - это Объект. Поэтому, когда я пытаюсь получить доступ к нему в представлении (item.Owner.Name), я ничего не получаю (null). Я могу изменить запрос на контроллере, чтобы он возвращал присоединенную запись, но тогда модель в представлении больше не будет бизнесом.
Я искал в Интернете, но не нашел хорошего и ясного объяснения. Не уверен, почему EF не связывает вложенные объекты автоматически.
Один вариант, который я видел на Youtube, но я думаю, что это отстой:
- Создать новую модель свсе столбцы после объединения
- В моем контроллере запустите объединение и передайте его представлению
- В представлении примите новую модель в качестве параметра
Ссылка- https://www.youtube.com/watch?v=v1B3R-kb9CU
Спасибо.