2014-12-26 65 views
0
  1. 在我的建築解決方案,我已經使用工作的通用單位&(可擴展)庫框架開源從這鏈接: https://genericunitofworkandrepositories.codeplex.com/ 但示例代碼沒有使用延遲加載,所以我有它在我的項目中,但它不工作?

2.與實體框架(惰性加載模式處於活動狀態)很多時,當我們檢索一個對象時,我們調用相關對象的某些屬性。但在我的這個框架和懶惰加載模式的項目我沒有這個結果相關是自動加載時檢索我的parrent對象?我需要幫助嗎?通用單位與延遲加載

這是我的數據上下文的構造:

public DataContext(string nameOrConnectionString) 
      : base(nameOrConnectionString) 
     { 
      _instanceId = Guid.NewGuid(); 
      //Configuration.LazyLoadingEnabled = false; 
      //Configuration.ProxyCreationEnabled = false; 

     } 

這是我控制器的例子:

   //Loading agencies only (but not working because i get all the related objects) 
     IList<Agency> Agence = AgencyService.Query().Select().ToList(); 

     Agency Ag = Agence[0]; 

     //Loads Agency company for particular Agency only (seperate SQL query) => also not working 
     Company company = Ag.Company; 

回答

0

要設置遲緩裝載活性:

  1. 上下文。 Configuration.ProxyCreationEnabled應該爲true。
  2. context.Configuration.LazyLoadingEnabled應該爲true。

  3. 導航屬性應該定義爲公共的,虛擬的。如果該屬性未定義爲虛擬,則上下文不會執行延遲加載。

+0

延遲加載激活默認情況下,實體框架,我們不需要Configuration.LazyLoadingEnabled設置爲true,和我所有的導航屬性是公共的,虛擬的。使用通用庫時是否有特定的配置? –

+0

在Entity Framework運行時中,ObjectContext實例中的LazyLoadingEnabled屬性的默認值爲false。但是,如果使用Entity Framework工具創建新模型和相應的生成類,則生成的代碼將在生成的對象上下文的構造函數中將LazyLoadingEnabled設置爲true。 –

+0

這意味着,數據庫第一種方法默認情況下azyLoadingEnabled屬性爲true。但首先我們需要在上下文構造中設置代碼 –