考虑以下代码:
var svc = new ProductDesignerEntities(AppSettings.ProductDesignerServiceLocation);
var scenariox = svc.Scenarios
.Where(o => o.ID == id)
.FirstOrDefault();
var scenario = svc.Scenarios
.Expand(o => o.SomeNavigationProperty)
.Where(o => o.ID == id)
.FirstOrDefault();
此代码运行时,scenario.SomeNavigationProperty
将无法填充。注释掉填充scenariox
的代码可以修复它。为什么是这样?是否可以通过配置服务上下文或数据服务来解决这个问题,还是必须以某种方式更改我的代码设计?
我能想到的替代品在某种程度上都是劣等的:
ProductDesignerEntities
个实例。这几乎完全杀死了请求内的缓存。ProductDesignerEntities
实例。使用基本控制器类不那么烦人,但这会导致控制器之间的缓存失效,并且如果同一控制器中的不同操作需要来自同一个表的不同导航属性集,则无法解决问题。我开始倾向于第一种选择。尽管每个实例的新连接都有额外的开销,但似乎问题最少:/
编辑:我设法让服务查询通过Fiddler运行,看起来是正确的。但是scenario
上的导航属性仍然空白,除非我注释掉scenariox
代码。
答案 0 :(得分:0)
进行进一步的研究之后,似乎你应该在每个使用环境中创建一个新的ProductDesignerEntities
实例,这样我就可以使用它。尽管如此,我仍然无法正确解决问题,这让我很烦恼!
我要把它写成一个非常奇怪的配置问题,或者是WCF数据服务中的错误,因为根据Fiddler的说法,它确实执行了对附加数据的请求;它只是没有出现在返回的对象中。