我正在尝试通过WCF服务返回多个elementes列表,我想控制列表中加载的每个对象,以避免序列化和返回结果时出现堆栈溢出异常。
我使用LINQ to Entities填充此列表,并且我已禁用EF模型的延迟加载...但是当我尝试它时,会填充许多引用,并在尝试返回List时抛出异常。
这是一个例子:
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>();
}
}
这个表“事物”被其他像“人物”(有东西)引用,这就是问题,当我试图返回它时,每个“事物”都有一个“人物”及其他人的列表。
我错过了什么吗?
提前致谢!
编辑: 添加了一些代码。现在它正在工作......我认为当你试图“观察”它时,它会加载每个导航属性,即使它没有加载:-S
现在我只是怀疑我是否通过在构造函数中创建实体实例以通过WCF使用它来做得很好。
答案 0 :(得分:2)
在使用WCF时,不要使用长期上下文(在您的情况下为字段“实体):
答案 1 :(得分:1)
如果您关闭了延迟加载,则必须告知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>();