0
我正在研究一個企業應用程序,它利用EF 4.1上的存儲庫模式,並將其預先加載到POCO實體。通常情況下,調用將是這樣的:EF 4.1中的POCO實體和IsLoaded()
public IEnumerable<SomeEntity> List(DateTime date)
{
using (var context = ContextFactory.CreateContext()) // Returns a DbContext
{
return CreateQuery<SomeEntity>(context)
.Include("PATH1")
.Include("PATH2")
.Where(...)
.AsNoTracking()
.ToList();
}
}
在某一點上,業務層會將這些實體爲DTO的,然後可通過WCF發送到Web應用程序。由於急切的加載是相當昂貴的,我試圖保持.include的到最低限度,所以有時候相關的屬性(急切地)加載,有時它們不是。然而,業務層並不知道相關屬性何時出現在實體中,因此我得到了一個ObjectContextDisposedException,其原因對我來說是完全清楚的,我不打算改變基本策略(即在急切地加載實體)。但是,我需要檢查一個特定的相關屬性是否被加載,檢查相關對象是否爲空不起作用(ObjectContextDisposedException),也沒有任何可以使用的IsLoaded()方法。
我在這裏遇到try/catch塊還是還有其他選項?
感謝一堆,這確實有竅門! –