Не могу получить список в модели, которую я получаю как AsQuerable в ef? - PullRequest
0 голосов
/ 05 марта 2020
public class Product
{
    public int Id{get;set;}
    public int UserId{get;set;}

    public Users User{get;set;}
}

Я установил для Пользователя относительное относительно продукта:

b.HasOne("User").WithMany().HasForeignKey("UserID");

Когда я использую entityframework, чтобы получить список продуктов.

Пользователь возвращается null, почему? В таблице User есть значение, а в таблице Product справа UserId.

var list = _context.Products.AsQueryable();

items в list имеет User=null.

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Вы должны включить искомую сущность. Например, предположим, у меня есть следующий контекст.

AppDbContext.cs

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }
    public DbSet<Notification> Notifications { get; set; }
    public DbSet<Offer> Offers { get; set; }
}

Notification.cs

public class Notification
{
    public int Id { get; set; }
    public string Title { get; set; }
    public int? OfferId { get; set; }
    public virtual Offer Offer { get; set; }
}

Если вы хотите использовать Offer сущность из Notification, вам нужно использовать следующее утверждение:

context.Notifications.Include(n=> n.Offers).ToList();
// Your code goes here

В вашей ситуации:

var list = _context.Products.Include(p=> p.User).AsQueryable();
1 голос
/ 05 марта 2020

Вы должны явно попросить включить пользователей в возвращаемый список.

_context.Products.Include(p => p.Users).AsQueryable();
...