首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测到的周期

检测到的周期
EN

Stack Overflow用户
提问于 2019-09-08 07:50:36
回答 2查看 2.7K关注 0票数 0

我的项目不会添加对同一解决方案中另一个项目的引用。

我为一个网站创建了一个项目,并将程序的所有部分抽象到.Net类库中(我的模型在不同的类库中,接口在不同的类库中,业务逻辑在不同的类库中)。我正确地引用了所有的项目,并且我还尝试创建了一个我称之为EntityRepository的东西,最初我把DbContext放在里面。但由于我想要使用微软的Identity实现,然后搭建逻辑,我无法从另一个项目中找到搭建时所需的DbContext,因此我不得不将该项目排除在解决方案之外。通常,当您创建项目并选择单用户身份验证时,.Net核心会将初始DbContext添加到项目中。因此,在将AspNetCore Identity的实现搭建到我的项目中时,我必须选择DbContext。正因为如此,我的业务逻辑被分成了两部分。另一个逻辑在同一解决方案中的另一个项目中,身份和身份验证在启动项目中,这是web应用程序。当我尝试从另一个项目调用实现业务逻辑的服务到web项目中时,它无法添加对服务项目的引用。我现在手动添加了引用。在那之后,我现在看到一个错误被写成

代码语言:javascript
运行
复制
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?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-08 08:50:47

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

代码语言:javascript
运行
复制
CBTSoftware.Services -> CBTSoftware.Data

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

代码语言:javascript
运行
复制
CBTSoftware.Web.Host -> CBTSoftware.Services

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

票数 1
EN

Stack Overflow用户

发布于 2019-09-08 22:33:46

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

代码语言:javascript
运行
复制
services.AddDbContext<CBTDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57838194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档