gpt4 book ai didi

entity-framework - 选择数据时排除属性

转载 作者:行者123 更新时间:2023-12-02 05:43:18 25 4
gpt4 key购买 nike

我有一个具有虚拟属性 ( public virtual List<Ingredients> ) 的类,但在某些情况下我不想获取该数据。我怎样才能做到这一点?我知道 .Include.Select ,但如果我这样做,我需要更改大量代码,因为在我的存储库中我也返回了一个可查询和服务层。

最佳答案

间接回答:我不会在服务层公开IQueryable。出于(至少)三个原因:

  • 您必须在访问导航属性时保持上下文事件。
  • 使用您的服务层的层可以深刻地影响发送到数据库的 SQL。您希望控制您的服务或存储库中的内容。
  • 对服务层进行单元测试非常困难。

因此,如果您在应用程序中公开您需要的 IEnumerable 对象,您就可以提供那些加载了特定场景所需的导航属性的对象。例如。产品实体(名称等)的维护功能将仅获取裸产品(并且任何代码都不会访问成分)。从成分组成产品的功能也将获得其成分。服务/存储库方法应该有参数来指定你需要什么。

如果您希望 100% 保证惰性导航属性不会被访问,您需要将投影对象(或 DTO)暴露给您的应用程序。

关于entity-framework - 选择数据时排除属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10653768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com