gpt4 book ai didi

c# - 在数据库中插入数据的存储库或服务 - Entity Framework

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:29 25 4
gpt4 key购买 nike

使用 Entity Framework 创建新地址的方法:

操作 1:

IRepository<Address> _addressRepository;

并使用地址实体直接与数据库对话。

操作 2:

public bool CreateAddress(AddressDto addressDto);

并与服务方法对话以插入新地址。

问题是,在项目的长期维护中,哪个能提供更多保证,不会存在有人更改某些内容并破坏依赖它的另一段代码的风险?

根据您的经验,哪种方法最好?

最佳答案

根据我的经验,第二种选择效果最好。我喜欢有一个服务外观,在它的背后可以实现和调整业务逻辑,而不会影响我的服务的消费者。顺便说一句,服务可以是域服务、Web 服务、Web API 之类的东西。基本上,它是围绕业务逻辑和数据访问的外壳,仅公开一些消费者可以调用的方法。

在我看来公开存储库方法暴露了太多信息。为什么消费层会知道存储库实现?你将永远依赖于存储库模式。关于 EF 和(通用)存储库的讨论很多。就个人而言,我讨厌通用存储库。我喜欢从聚合根的角度来思考。为每个实体类型创建一个存储库通常是一层太多了,它只会成为阻碍。 DbContext 中的 DbSet 是基本存储库。上下文非常适合作为一个工作单元。我倾向于直接在服务方法中转向上下文,而不是编排存储库和工作单元。当然,您可以使用存储库,但将它们隐藏在服务外观之后。

最后一点:我不会只从服务方法返回一个 bool 值,而是一个包含有关方法失败/成功信息的对象。例如。 Web API 中的 HttpResponse。

关于c# - 在数据库中插入数据的存储库或服务 - Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15508702/

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