[英]Disabled lazy loading EF not working correctly?
我試圖通過WCF服務返回幾個元素列表,並且我想控制列表中加載的每個對象,以避免在序列化和返回結果時出現堆棧溢出異常。
我使用LINQ to Entities填充了此列表,並且為EF模型禁用了延遲加載...但是當我嘗試使用它時,將填充許多引用,並且在嘗試返回列表時會引發異常。
這是一個例子:
public class DelegacionesDAO : IDelegacionesDAO
{
Model.Entities entities = new Model.Entities();
public DelegacionesDAO()
{
entities.ContextOptions.ProxyCreationEnabled = false;
entities.ContextOptions.LazyLoadingEnabled = false;
}
public List<Model.Things> GetDelegaciones()
{
IQueryable<Model.Things> thingsList= from things in entities.Things
select things;
return thingsList.ToList<Model.Things>();
}
}
該表“ Things”被其他類似“ Persons”(擁有事物)的人引用,這就是問題所在,當我嘗試將其返回時,每個“ Thing”都有一個“ Persons”及其他列表。
我錯過了什么嗎?
提前致謝!
編輯:添加了更多的代碼。 現在它正在工作...我認為即使您未“加載”它,它也會加載每個導航屬性:-S
現在,我只是懷疑是否通過在構造函數中創建實體實例以通過WCF使用它來做得很好。
使用WCF時,請勿使用長期存在的上下文(在您的情況下為“字段”實體):
如果您關閉了“延遲加載”,則必須告訴EF加載引用。
嘗試這個:
var thingsList= (from things in entities.Things
select things) as ObjectQuery<Model.Things>;
thingsList = thingsList.Include("Persons"); //name of navigation property
return thingsList.ToList<Model.Things>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.