我試圖用實體框架實現延遲加載。我會很早就承認,我從來沒有做過這件事,我正在掙扎。所以我所嘗試的一切都是基於我在這裏找到的文章。基本上我現在正在獲取底層連接意外關閉錯誤消息。延遲加載 - (實體框架)底層連接意外關閉
當我執行WCF跟蹤時,表示在嘗試使用DataContractResolver對參數http://tempuri.org...Consider進行序列化時發生錯誤(如果正在使用DataContractSerializer或將任何類型未知的靜態添加到已知類型的列表中)。
所以我研究了DataContractResolver,並且對於如何實現這一點還不清楚,並且我還不清楚我如何知道我是否使用DataContractSerializer。就像我說的,我是新手。
這裏是我當前的代碼:
public OMBCase GetOMBCaseByCaseId(long caseId)
{
//using (AWCTSDBEntities context = new AWCTSDBEntities())
AWCTSDBEntities context = new AWCTSDBEntities();
//{
try
{
context.Configuration.ProxyCreationEnabled = true;
context.Configuration.LazyLoadingEnabled = true;
context.Configuration.AutoDetectChangesEnabled = false;
((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 120;
context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
var caseRecQuery = (from c in context.Cases
where (c.CaseId == caseId && c.SystemTypeCode == SystemCodes.OMB)
select c).OfType<OMBCase>();
var caseRecord = caseRecQuery.Single();
var soldierDetails = caseRecord.Soldier;
var soldierAddress = soldierDetails.Addresses.ToList();
foreach (var p in soldierDetails.Addresses)
{
var soldierAddressPurpose = p.AddressPurposes;
foreach (var ap in soldierAddressPurpose)
{
var purpose = ap;
}
}
var soldierTelehone = soldierDetails.Telephones.ToList();
var soldierEmail = soldierDetails.Emails.ToList();
var soldierContacts = soldierDetails.Contacts.ToList();
foreach (var ca in soldierDetails.Contacts)
{
var contactAddress = ca.Addresses;
foreach (var cp in contactAddress)
{
var contactAddressPurposes = cp.AddressPurposes;
}
}
foreach (var ce in soldierDetails.Contacts)
{
var contactEmails = ce.Emails;
}
foreach (var ct in soldierDetails.Contacts)
{
var contactTelephone = ct.Telephones;
}
var personInterviewed = caseRecord.PersonInterviewed;
var createdByUser = caseRecord.CreatedByUser;
context.Dispose();
return (caseRecord);
//
}
catch (NullReferenceException)
{
context.Dispose();
return (null);
}
catch (Exception e)
{
context.Dispose();
WriteToLogFile(e);
return (null);
// }
}
}
任何指導,你可以提供到哪裏何去何從將不勝感激。
在此先感謝您提供的任何幫助。
羅德尼
什麼線它拋出一個例外?它是在您返回值之後嗎? – lucrativelucas
它正在返回。當我在調試器中查看代碼時,我看到所有的值都回來了,而且都很好看。然後我打回來,一切都死了。 –
在調用context.Dispose();之後查看這些值。我有一種感覺,當這種情況發生時,他們都會走出窗外。你以前的問題是類似的,這個問題是否同樣適用? http://stackoverflow.com/questions/31703801/entity-framework-lazy-load-with-multiple-includes – lucrativelucas