簡體   English   中英

ASP.Net MVC。 如何始終在Entity Framework查詢中包含相關數據?

[英]ASP.Net MVC. How always include related data in Entity Framework queries?

使用實體框架選擇關系表時,我們必須在查詢中手動“包括”相關數據,例如:

MyEntity entity = db.MyEntities
            .Include(e => e.related_1)
            .Include(e => e.related_2)
            .FirstOrDefault(e => e.Id == id);

否則,entity.related_1或entity.related_2將為null。

我想知道是否有一種方法可以在選擇它之前設置預包含關系,而不必每次都選擇相關數據。 例如:

db.preInclude(???) // not a real method.
someOtherCode(...)
MyEntity  entity_1 = db.MyEntities.Find(id_1);
MyEntity  entity_2 = db.MyEntities.Find(id_2);
MyEntity  entity_3 = db.MyEntities.Find(id_3);

創建一個返回所需查詢的函數,然后執行它:

public IQueryable getTheEntity(DbContext database) {
    var query = from e in database.MainEntity.Include("SubEntity1.Another").Include("SubEntity2");

    return query;
}

然后,在需要完整模型時調用該函數:

using (MyDbContext database = new MyDbContext()) {
    var result = (from e in getTheEntity(database) where ...).FirstOrDefault();
}

您甚至可以將getTheEntity(...)擴展為DbContext類的擴展名,因此調用它的過程會比較簡單:

var result = (from e in database.getTheEntity() where ...).ToList();

將您的相關虛擬化,從而啟用延遲加載,這樣,您無需顯式調用Include,當您引用此虛擬相關實體時,將從數據庫中檢索它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM