Как выбрать определенные элементы в Включить в EF Core? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть сущность, которая выглядит следующим образом:

public class UserOrganization
{
    public string UserId { get; set; }

    [ForeignKey("UserId")]
    public MyUser User { get; set; }

    public int OrganizationId { get; set; }

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

Вышеупомянутая сущность используется для обеспечения отношения «многие ко многим» между MyUser и Organization сущностями.Теперь, когда я хочу получить данные из своего репозитория для пользователя, я также хочу включить данные для организации, и у меня есть что-то вроде этого:

public IEnumerable<MyUser> GetFullUsers()
{
    return _context.Users
                   .Include(u => u.Location)
                   .Include("UserOrganizations.Organization")
                   // And many other include statements removed for breivty.
                   .ToList();
}

Теперь все работает нормально, и я получаюсоответствующие данные, но для "UserOrganizations.Organization" я получаю много вложенных данных.Я имею в виду, что моя сущность Organization включает членов типа MyUser, а затем показывает пользователей, а затем снова организации пользователей и т. Д., Потому что все глубоко вложено.Поэтому я не хочу получать другие данные и хочу выбрать только несколько свойств из .Include("UserOrganizations.Organization").Как мне этого добиться?

Обратите внимание, что я не хочу писать весь запрос как оператор выбора, потому что у меня есть много других полезных вещей, которые я удалил для краткости, поэтому ручное сопоставление было бы громоздким.Мне просто нужно убедиться, что .Include("UserOrganizations.Organization") не извлекает также вложенные данные или если я могу просто выбрать, какие свойства из Organization извлечь здесь?

РЕДАКТИРОВАТЬ:

У меня уже есть следующее OnModelCreating:

modelBuilder.Entity<UserOrganization>(uo =>
{
    uo.HasKey(k => new { k.UserId, k.OrganizationId });

    uo.HasOne(u => u.User)
      .WithMany(o => o.UserOrganizations)
      .HasForeignKey(k => k.UserId);

    uo.HasOne(o => o.Organization)
      .WithMany(u => u.UserOrganizations)
      .HasForeignKey(k => k.OrganizationId);
});

А у моих MyUser и Organization сущностей есть следующие свойства:

public class MyUser : IdentityUser
{
     // Rest removed for brevity
     public ICollection<UserOrganization> UserOrganizations { get; set; } = new List<UserOrganization>();
}

И

public class Organization
{
    // Rest removed for brevity
    public ICollection<UserOrganization> UserOrganizations { get; set; } = new List<UserOrganization>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...