在检查“覆盖所有文件”和在 asp.net 6 中添加的 ApplicationDbContext 后尝试添加“IDENTITY”时,脚手架失败

问题描述 投票:0回答:2

要在我的 mvc 项目中添加身份,

1 - 我右键单击了我的 Web 项目 -> 将鼠标悬停在“添加”上 -> 单击“添加新脚手架项目”

2 - 选择“身份”-> 单击“添加”

3 - 加载后,我检查了“覆盖所有文件”-> 在数据上下文类中,我选择了 ApplicationDbContext(BulkyBook.DataAccess) -> 然后单击“添加”

4 - 因此会弹出一条错误消息: “运行所选代码生成器时出错: '脚手架失败了。 无法加载项目信息 C:\用户\所有者\源 epos\RentalMovieApp\BulkyBook.Models\BulkyBook.Models.csproj'

c# model-view-controller
2个回答
0
投票

我想我能够找到解决此错误的方法

CodeGeneration.Design
工具。经过对工作流程的一些测试后,我发现该工具(CodeGenerator.Design)似乎只有在您从 Context 类所在的同一项目中运行它时才能工作。

本质上,如果您添加 Scaffolding 项并遵循工作流程,您将能够生成 Area 文件夹,其中将包含 Data -> AppDbContext、Pages 文件夹、Manage 文件夹及其相应页面。结构见下图。

创建身份脚手架的步骤

  1. 右键单击主项目
  2. 点击
    Add New Scaffold Item
  3. 在出现的对话框中,在
    Common
    下查找
    Identity
  4. 单击“添加”,然后从以下选项中选择:布局和要覆盖的页面。
  5. 对于数据上下文类,单击
    +
    符号
  6. 点击
    Add
    按钮

需要注意的几点

  • 这是一种解决方法,但一旦您能够生成上述结构,就可以将上下文移动到不同的项目,以便遵守关注点分离。
  • 在我看来,重点在于步骤 6,因为 CodeGenerator.Design 在连接您的案例中的主项目和数据层项目之间的点时遇到了挑战
    BulkyBook.DataAccess

0
投票

如果有人仍然被这个问题困扰,我已经找到了解决方案。当我的一个软件包的版本与另一个软件包不同时,我遇到了同样的错误。所以我将每个包的版本更新为相同(对我来说是 7.0.12),这解决了问题。

按照以下步骤更新软件包版本:

  1. 右键单击您的项目文件并转到“管理 NuGet 包...”
  2. 选择每个项目更新其版本,但保持除“Microsoft.VisualStudio.Web.CodeGeneration.Design”包之外的所有包的版本相同

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.