问题标签 [ardalis-cleanarchitecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 清洁架构 - 在 ASP.NET MVC 中 - 我使用哪一层来编写 ViewModel?
问题很简单,
我正在使用 ASP.NET MVC 为项目(网站)使用 Clean Architecture。我从 GitHub下载了Ardalis编写的 Clean Architecture 模板示例代码。
在那个特定的模板中,作者没有使用视图模型。
是否有人对使用 Clean Architecture 和 ASP.NET MVC 的视图模型等的模板有任何参考,或者知道在哪里放置(层)视图模型。
repository-pattern - 使用存储库模式时如何调用 SQL 函数/存储过程
将代码转换为使用存储库模式时,调用 SQL 函数/存储过程的最佳方法是什么?具体来说,我对读取/查询功能感兴趣。
选项
- 添加
ExecuteSqlQuery
到IRepository
- 添加特定于上下文(即
ILocationRepository
)的新存储库接口并添加特定于资源的方法 - 为所有随机存储过程添加一个特殊的“存储库”,直到它们全部转换
- 不。只需将存储过程转换为代码并将逻辑放在服务层中即可
选项 #4 似乎确实是最好的长期解决方案,但它也需要更多时间,我希望将其推到未来阶段。
哪个选项(以上或其他)将是“最好的”?
注意:我的架构基于ardalis/CleanArchitecture使用ardalis/Specification,尽管我愿意接受所有建议。
ardalis-cleanarchitecture - 清洁架构示例测试用例
#ardalis-cleanarchitecture 我阅读了您的 WorkService PR 代码。我正在尝试将它重用于我的东西。我看到了你的模拟测试,无法将它用于我需要的多个依赖项。你能帮我解决这个问题吗?您提到将添加元组。我试过这样做,但没有通过
dependency-injection - 在 AutoFac 中,为什么我的通用存储库的 RegisterGeneric 调用顺序仅适用于最后一个注册的存储库?
我正在开发一个面向 .NET 5 的 ASP.NET API,我需要在其中访问三个不同的 SQL 数据库。
我使用 AutoFac 作为我的 DI(免责声明:我是 AutoFac 的新手,过去只在 DI 中使用过 ASP.NET Core 构建)。
我也在使用 Steve Smith 的 CleanArchitecture 框架(https://github.com/ardalis/CleanArchitecture)
我正在使用通用存储库,每个 DbContext 一个(代表 3 个不同的数据库)。
我的启动项目的 Startup.cs --> ConfigureContainer 方法中有以下代码;
在我的 DefaultInfrastructureModeule 类中,我有以下代码;
项目编译并运行。但是,当我尝试从存储库调用方法(例如 ListAsync 方法)时,唯一正常工作的存储库是注册序列中列出的最后一个存储库。
例如,使用上面代码中列出的顺序,对 M1Repository 的 ListAsync 调用按预期工作,但对 IdpRepository 或 CdRepository 中的 ListAsync 方法的调用失败并出现 SqlException;
就像它不理解 DbContext.Set 应该查询用户表(复数),而不是用户表。
现在,如果我重新排列 DI 注册的顺序并将 IdpRepository 的注册移动到按顺序注册的最后一个,则 ListAsync 调用随后适用于 IdpRepository 但随后对 M1Repository 和 CdRepository 的调用失败并出现类似的 SQL 异常.
无论我以什么顺序注册它们,只有最后一个注册的工作正常。
所有三个通用存储库都使用 CleanArchitecture 模板中使用的相同基本设计。CdRepository 示例如下所示;
我确信这只是我不知道的 AutoFac 问题,因为我是 AutoFac 初学者。我似乎无法解决它。
有任何想法吗?
[更新 1]
这是我的 ListDepartments 端点,我在其中注入了一个存储库。
[更新 2]
在阅读了@ssmith 的评论后,我意识到我需要为 3 个通用存储库中的每一个提供独特的接口。导致问题的原因是使用 CleanArchitecture 模板中提供的 IRepository 和 IReadRepository 接口用于 AutoFac 中的三个不同存储库注册中的每一个。就我而言,一个明显的大脑放屁的例子。
一旦我为三个存储库中的每一个创建了独特的接口,该解决方案现在就可以工作了。
这是修改后的存储库;
这是我在其中注册存储库的 DefaultInfrastructureModule 类的修订版。
感谢@ssmith 的指导。:)
ardalis-cleanarchitecture - 清洁架构 (DDD) 为什么域对象(DB 实体)和 DbContext 在不同的项目中?
我理解抽象和分离关注点和单元测试的必要性,但是,在我看来,将实体和上下文分成 2 个项目有点过度设计?
我可能真的错过了一些东西,但这是因为你想对不同的 ORM-s 开放吗?
非常感谢您的澄清。
domain-driven-design - 如何管理 IAggregateRoot 的 Guard.Against.NotFound
我想知道如果数据库中存在projectId,我们是否要检查是否添加新项目,shell我们以某种AddItem
方式插入Guard.Agains.NotFound(???)
或不插入?我问是因为如果创建一些实体:
我们如何验证请求发送的 countryId 是否存在于数据库中?如果创建集成测试的示例,例如:
无论我输入的整数值是否为 CountryId 测试都会通过,直到不是 0 或负整数,但我想检查国家实体的 id 是否存在于数据库中。管理此检查的最佳地点在哪里?问候,
.net - 为什么这个模板被认为是“干净的”?
所有项目都有很多依赖项。为什么不使用像 Data -> Repository -> Service 项目这样只指向一种方式并且依赖项仅出现在服务层上的洋葱架构?
我知道它有使用 MediatR 实现的域事件,但是为什么我们至少没有一些没有部门的域项目呢?(SharedKernel 与域无关)
模板给我带来了比清洁更多的问题。这对我来说真的很奇怪,因为我曾经使用过洋葱架构。
此外,文件夹,命名,文件位置,代码风格 - 它是如此不一致。没有冒犯,但对我来说看起来有点不稳定。
ardalis-cleanarchitecture - 未处理 NewItemAddedEvent
我正在阅读 Clean Architecture Code 并且我意识到NewItemAddedEvent
in ( Clean.Architecture.Core
) 没有被处理,它只用于测试。
是否有理由将其创建为事件而未处理?它的测试目的是什么?
entity-framework - 如何从 Ardalis CleanArchitecture 中的迁移中忽略域事件?
参考:https ://github.com/ardalis/CleanArchitecture
BaseEntity 模型包含一个List<BaseDomainEvents>
. 在执行 EF 迁移时,此列表将被忽略。
这是如何实现的?代码中没有任何内容表明它应该被忽略。
c# - 如何使用 DbContext 处理多源数据库
我使用干净的拱形步骤来创建项目,但问题是我需要将三个以上的聚合放在参考数据库中。
我尝试对每个聚合使用 DbContext,如下所示:
我像这样发送每个 DbContext 的连接字符串:
但是当我尝试迁移它们时,它会显示如下豁免错误:
最后,我修复了MySql.EntityFrameworkCore
与 net6.0 不兼容的更改包的部分问题,因此我使用Pomelo.EntityFrameworkCore.MySql
了它并且成功运行。
但是我还有另一个问题是我的所有聚合在所有上下文中都秃顶了,我需要每个 DbContext 只构建他的聚合,那么如何解决它?