Entity Framework: Entity для включения фиксированного количества навигационных свойств: как написать этот запрос - PullRequest
0 голосов
/ 19 марта 2012

У меня есть 2 сущности, как описано ниже

public class Product 
{
    public int Id { get; set; }
    public string Name { get; set; } 
    public ICollection<Comment> Comments { get; set; }    
}

public class Comment
{
    public int Id { get; set; }
    public string Message { get; set; }    

    [ForeignKey("Product")]
    public int ProductId { get; set; }
    public Product  Product { get; set; }
}

Теперь я хочу написать запрос, который включает в себя только 10 комментариев для конкретного продукта. Запрос, который я написал ниже, включает в себя все комментарии к продукту.

var product = db.Products.Include(a=>a.Comments).Take(10);

Пожалуйста, предложите, возможно ли это в рамках сущности.

Редактировать 1

изменил этот запрос на

var product = db.Products.Include(a=>a.Comments).FirstOrDefault(c=>c.Id==1);

этот

var product = db.Products.Include(a=>a.Comments).Take(10);

Мне нужно загрузить 10 товаров с 10 комментариями каждый.

Ответы [ 3 ]

1 голос
/ 19 марта 2012

Вы всегда можете изменить это и получить Comments с продуктом:

var comments = db.Comments.Include(c => c.Product)
    .Where(c => c.Product.Id == 1)
    .Take(10);
1 голос
/ 19 марта 2012

Это будет работать, если вы не возражаете вернуть анонимный тип или poco:

var products = from x in db.Products.Take(10)
              select new 
              {
                ProductProperty1 = x.Property1,
                Comments = x.Comments.Take(10),
              };

var product = products.FirstOrDefault(c=>c.ProductProperty1 ==1);
0 голосов
/ 19 марта 2012

Я верю, что подойдет следующее:

var comments = db.Comments.Where(c=>c.ProductId==1).Take(10).ToList();
var product = db.Products.FirstOrDefault(c=>c.Id==1);
...