0

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

我为一个网站创建了一个项目,并将程序的所有部分抽象为 .Net 类库(我的模型在不同的类库中,接口在不同的类库中,业务逻辑在不同的类库中)。我正确地引用了所有项目,并且我还尝试创建一个我称之为 EntityRepository 的东西,我最初将 DbContext 保存在里面。但是由于我想使用 Microsoft 的 Identity 实现然后将逻辑搭建出来,我无法从另一个项目中找到搭建脚手架时所需的 DbContext,因此我不得不将该项目排除在解决方案之外。通常,当您创建项目并选择单用户身份验证时,.Net 核心会在项目中添加一个初始 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?
4

2 回答 2

1

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

CBTSoftware.Services -> CBTSoftware.Data

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

CBTSoftware.Web.Host -> CBTSoftware.Services

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

于 2019-09-08T00:50:46.660 回答
0

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

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

通过添加它,我能够DbContextWeb Project. 然后,当我尝试添加迁移时,又出现了另一个问题。我会在另一篇文章中打开

于 2019-09-08T14:33:45.727 回答