我有一個從我的實體模型中檢索項目的列表中ASP.net MVC控制器動作。對於這個實體,有一些屬性不在實體本身中。我創建了一個部分類以添加這些屬性:實體框架 - 拉回相關數據
public partial class Person
{
public int Extra
{
get
{
using(var ctx = new DBEntities())
{
return ctx.OtherTable.Count(p => p.PersonID == this.PersonID);
}
}
}
}
正如您所看到的,我需要訪問的屬性來自另一個表。在我的MVC頁面中...我需要返回大量人員(每頁100+)。爲了顯示這個額外的字段,每個Person實體將分別打到數據庫......這非常低效。我有一個查詢返回所有人,然後爲每個人查詢每個屬性,我有這樣的。這最終可能是300次調用數據庫,這需要很長時間才能執行。
什麼是更好的方法來做到這一點?我會非常想執行一個查詢,返回所有的人民和額外的數據,但我也想額外的數據是個人實體的一部分,哪怕是在數據庫中一個單獨的表。
更新
從評論中添加更多的上下文。
我從存儲庫類中返回人員。我在另一個問題中被告知,知識庫應該只是處理實體本身。因此,檢索人員的代碼如下所示:
class PersonRepository
{
public IQueryable<Person> GetPeople() {
return from p in db.People
where p ...
select p;
}
}
我真的沒有在該情況下加入的選項。
檢索人是在資源庫中的代碼。在另一個問題中,我問是否應該返回視圖模型的存儲庫。我被告知他們應該只是返回你的實體。 – Dismissile 2011-02-22 19:38:04