.net core 2 Entity Framework - объект расширенного внешнего ключа ApplicationUser не заполняется при получении - PullRequest
0 голосов
/ 14 мая 2018

Я расширил ApplicationUser, включив в него OrganizationId и объект Organization, который должен отображаться в сторонней таблице Organization. Это отлично работает при начальной регистрации пользователя - если это существующая организация, я просто заполняю поле OrganizationId. Если это новая организация, я создаю экземпляр нового объекта Organization, и в таблице Organization создается новая организация.

Когда я опускаю запись с помощью GetUserAsync, извлекаются правильные поля CityId и OrganizationId. Объекты UserCity и Organization имеют значение NULL. Я знаю, что могу выполнить ручной поиск для запроса города / организации на основе возвращаемых идентификаторов, но мне было интересно, есть ли в Entity Framework механизм для автоматического заполнения этих двух объектов аналогами с внешним ключом в GetUserAsync.

var user = await _userManager.GetUserAsync(User);

public class ApplicationUser : IdentityUser
{
    public String FirstName { get; set; }

    public String LastName { get; set; }

    public int? CityId { get; set; }

    [ForeignKey("CityId")]
    public virtual City UserCity { get; set; }

    [ForeignKey("OrganizationId")]
    public virtual Organization Organization { get; set; }

    public int? OrganizationId { get; set; }

    public bool AddToConstantContact { get; set; }
}

1 Ответ

0 голосов
/ 14 мая 2018

При получении записей вам нужно использовать ключевое слово include, чтобы получить ссылочные значения. Ex

using (var context = new BloggingContext())
{
    var blogs = context.Blogs
    .Include(blog => blog.Posts)
    .ToList();
}

для вашего кода будет что-то вроде

context.Include("Organization").Include("City")

Он также не загружается автоматически в ядро ​​Entity Framework, поскольку отложенная загрузка еще не поддерживается до версии 2.1.

Для получения дополнительной информации проверьте https://docs.microsoft.com/en-us/ef/core/querying/related-data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...