EF删除对象加载的相关类

时间:2016-10-18 18:02:40

标签: c# entity-framework linq

我首先使用EF DB查询我的数据库,我的“新闻”区域链接到其他几个区域,我不想加载此对象的关系。我有什么选择吗?我正在使用WebApi 2并将数据作为JSON返回给我的应用程序。

我知道我尝试过的一些选项:

  1. 使用我想要的字段创建第二个类,并使用LINQ select;
  2. 映射它
  3. 手动删除它们,将它们设置为空。
  4. 我真的不喜欢这些选项,因为第二个选项听起来不对,第一个感觉就像重做工作一样,我想知道是否有更好的选择来解决这个问题。

2 个答案:

答案 0 :(得分:1)

确保关闭延迟加载 this.Configuration.LazyLoadingEnabled = false;

并关闭代理创建 this.Configuration.ContextOptions.ProxyCreationEnabled = false;

然后确保不要在LINQ查询中使用Include。 HTH

答案 1 :(得分:1)

您的选择可能是:

  1. 让DTO专门针对您的"新闻"区域,只包含您需要返回的信息,使用某种Mapper从您的实体映射到您的DTO。我建议使用这种方法,因为它为您提供了足够的灵活性,使您的API合同和DB Schema不会相互依赖。

  2. 禁用系统范围内的延迟加载或针对此特定关系删除virtual关键字,并使用.Include(x=>x.Navigation)明确需要这些属性。

相关问题