Создал два класса со связью один к одному
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 . Надеюсь, это поможет.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Необходимо клонировать коллекцию так, чтобы все её объекты Element так же отвязались от исходной коллекцииПодскажите, как лучше всего это сделать?
Собственно вопросБыли мысли сделать подобное через relative source, но как это передать в код - не знаю
Друзья, возможно кто-нибудь интегрировал ASPNET Core сервер и БД MySQL