Создал два класса со связью один к одному
public class Example
{
// id и т.д.
[ForeignKey("CategoryFacetItem")]
[Display(Name = "Категория")]
public int? CategoryId { get; set; }
public virtual FacetItem CategoryFacetItem{ get; set; }
}
public class FacetItem
{
public int Id { get; set; }
public int FacetId { get; set; }
public Facet Facet { get; set; }
public string Name { get; set; }
}
При создании миграции Add-Migration и генерации базы данных Update-Database все работает хорошо, внешний ключ добавляется корректно.
Но при попытке перейти по связи CategoryFacetItem.Name ничего нет,
CategoryFacetItem - null
В контроллере использую Bind
public async Task<IActionResult> Create([Bind("CategoryId,CategoryFacetItem")] Parcel parcel)
Предположительно проблема в том, что свойство CategoryFacetItem в модели является навигационным свойством Entity Framework. Оно будет содержать null, до тех пор, пока вы явно не укажете при выборке сущности Example из БД, что данный связанный объект необходимо загрузить. В вашем методе, который получает сущности Example из базы, нужно сделать примерно следущее:
var examples = _context.Examples
.Include(example => example.CategoryFacetItem)
.ToList();
Также, начиная с версии EF Core 2.1 доступна "ленивая загрузка" связанных данных - EF загрузит значение свойства при первом обращении к нему. Пример включения ленивой загрузки приведен в этом сообщении https://stackoverflow.com/a/52027987/4624763 . Надеюсь, это поможет.
Продвижение своими сайтами как стратегия роста и независимости