Tôi đang sử dụng Mã đầu tiên trong EF. Hãy nói rằng tôi có hai thực thể:Lọc thuộc tính điều hướng trong Mã EF Đầu tiên
public class Farm
{
....
public virtual ICollection<Fruit> Fruits {get; set;}
}
public class Fruit
{
...
}
My DbContext là một cái gì đó như thế này:
public class MyDbContext : DbSet
{
....
private DbSet<Farm> FarmSet{get; set;}
public IQueryable<Farm> Farms
{
get
{
return (from farm in FarmSet where farm.owner == myowner select farm);
}
}
}
tôi làm điều này để mỗi người dùng chỉ có thể xem các trang trại của mình, và tôi không cần phải gọi Trường hợp trên mỗi truy vấn đến db.
Bây giờ, tôi muốn lọc tất cả các loại trái cây từ một trang trại, tôi đã cố gắng này (trong lớp trang trại):
from fruit in Fruits where fruit .... select fruit
nhưng truy vấn tạo không bao gồm các khoản đâu, mà là rất quan trọng vì Tôi có hàng chục ngàn hàng và không hiệu quả để tải chúng và lọc chúng khi chúng là Đối tượng.
Tôi đọc mà tính lười nạp được điền lần đầu tiên chúng được truy vấn nhưng họ đọc tất cả các dữ liệu, không có bộ lọc có thể được áp dụng trừ khi bạn làm điều gì đó như thế này:
from fruits in db.Fruits where fruit .... select fruit
Nhưng tôi không thể làm điều đó, bởi vì Farm không có kiến thức về DbContext (tôi không nghĩ nó nên (?)) mà còn với tôi nó chỉ mất toàn bộ mục đích sử dụng các thuộc tính điều hướng nếu tôi phải làm việc với tất cả dữ liệu chứ không phải chỉ thuộc về trang trại của tôi.
Vì vậy,
- tôi làm điều gì sai trái/làm giả định sai?
- Có cách nào để tôi có thể áp dụng bộ lọc cho thuộc tính điều hướng được tạo cho truy vấn thực không? (Tôi đang làm việc với nhiều dữ liệu)
Cảm ơn bạn đã đọc!
Cảm ơn Jeremy, tôi quyết định làm theo lời khuyên của bạn và để lại trách nhiệm lọc/xử lý trong lớp ngữ cảnh của tôi . Nó có ý nghĩa bởi vì tôi chỉ cần lọc cho một trong những thực thể của tôi, nhưng nó sẽ là cồng kềnh nếu tôi cần nó cho một số thực thể, bạn có nghĩ vậy không? Ngữ cảnh sẽ được điền bằng các phương thức để truy vấn và điền các thực thể. Tôi không nghĩ rằng nó phá vỡ nguyên tắc trách nhiệm duy nhất nhưng nó nghe có vẻ kỳ lạ, đúng không? – edpaez