检测到循环

Cycles detected

我的项目没有在同一解决方案中添加对另一个项目的引用。

我为网站创建了一个项目,并将程序的所有部分抽象到 .Net Class 库中(我的模型在不同的 class 库中,接口在不同的 class 库,不同 class 库中的业务逻辑)。我正确地引用了所有项目,我还尝试创建一个我称之为 EntityRepository 的东西,我最初将 DbContext 保存在里面。但是由于我想使用 Microsoft 的 Identity 实现然后将逻辑搭建起来,我无法从搭建搭建时所需的其他项目中找到 DbContext,因此我不得不将该项目排除在解决方案之外。通常当你创建一个项目和 select 单用户身份验证时,.Net core 会在项目中添加一个初始的 DbContext。因此,在将 AspNetCore Identity 的实现搭建到我的项目中时,我必须选择 DbContext。因此,我的业务逻辑分为两方面。另一个逻辑在同一解决方案的另一个项目中,身份和身份验证在作为 Web 应用程序的启动项目中。当我尝试将实现业务逻辑的服务从其他项目调用到 Web 项目时,它无法添加对服务项目的引用。我现在手动添加参考。在那之后我现在看到一个错误

Detail Error:
Severity    Code    Description Project File    Line    Suppression State
Error   NU1108  Cycle detected. 
  CBTSoftware.Web.Host -> CBTSoftware.Services -> CBTSoftware.Web.Host. CBTSoftware.Web.Host    C:\Users\Tavershima\source\repos\CBTSoftware\CBTSoftware.Web.Host\CBTSoftware.Web.Host.csproj   1```
How can I resolve this?

考虑创建一个包含您的 EntityRepository 的项目,例如 CBTSoftware.Data,并从您的服务项目中添加对它的引用:

CBTSoftware.Services -> CBTSoftware.Data

然后,您可以继续从您的 Web 项目引用您的服务项目:

CBTSoftware.Web.Host -> CBTSoftware.Services

您仍然可以在 Startup.cs 文件中配置您的 EntityRepository,因为它可以传递地了解您的 CBTSoftware.Data 项目。只需确保从服务项目中删除对 Web 项目的引用,因为这会造成循环。

我通过删除我在 Web Project 中创建的 DbContext 并使用我在另一个项目中创建的 .Net Library 解决了这个问题,然后我添加了这个我的 StartUp.cs 文件中的代码行

services.AddDbContext<CBTDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

通过添加它,我能够在 Web Project 中找到 DbContext。 然后当我尝试添加迁移时出现了另一个问题。我会在另一个 post

中打开