我首先使用EF DB查询我的数据库,我的“新闻”区域链接到其他几个区域,我不想加载此对象的关系。我有什么选择吗?我正在使用WebApi 2并将数据作为JSON返回给我的应用程序。
我知道我尝试过的一些选项:
我真的不喜欢这些选项,因为第二个选项听起来不对,第一个感觉就像重做工作一样,我想知道是否有更好的选择来解决这个问题。
答案 0 :(得分:1)
确保关闭延迟加载 this.Configuration.LazyLoadingEnabled = false;
并关闭代理创建 this.Configuration.ContextOptions.ProxyCreationEnabled = false;
然后确保不要在LINQ查询中使用Include。 HTH
答案 1 :(得分:1)
您的选择可能是:
让DTO专门针对您的"新闻"区域,只包含您需要返回的信息,使用某种Mapper从您的实体映射到您的DTO。我建议使用这种方法,因为它为您提供了足够的灵活性,使您的API合同和DB Schema不会相互依赖。
禁用系统范围内的延迟加载或针对此特定关系删除virtual
关键字,并使用.Include(x=>x.Navigation)
明确需要这些属性。