![]() |
1
1
我会从远处看这个问题。 无状态服务层 (所有状态都以DB形式持久化)并符合 一个HTTP请求,一个业务操作 原则(换言之,一个控制器动作一种服务方法)。 我不知道你的架构看起来如何(你的帖子中没有足够的信息来确定),但它很可能符合我上面描述的标准。 在这种情况下,很容易决定选择哪个组件生存期:DbContext和服务类可以是暂时的( 用Autofac术语)或根据请求( InstancePerRequest 俘虏依赖性的问题根本不存在 . 上述问题的进一步影响:
如果您将异步等待模式一直应用到控制器操作(返回 任务<行动结果> 行动结果 async child actions are not supported |
![]() |
2
0
答案总是取决于。。。在以下情况下,此配置可以工作:
我个人建议创建任何依赖于DbContext(直接或间接)的InstancePerRequest。暂时的也可以。您肯定希望一个工作单元中的所有内容都使用相同的DbContext。否则,使用Entity Framework的一级缓存,可能会有不同的服务检索相同的数据库记录,但如果它们不使用相同的DbContext,则会在不同的内存副本上操作。在这种情况下,最后一次更新将获胜。 我不会在MyService中引用您的容器,只需将其注入。域或业务逻辑中的容器引用应该谨慎使用,并且只能作为最后手段。 |
![]() |
SkarabePL · Yii2依赖注入、配置和继承 6 年前 |